[akabana-user:181] S2Flexのメモリリークについて

有井 貴志 [E-MAIL ADDRESS DELETED]
2008年 10月 14日 (火) 20:34:48 JST


お世話になります。有井と申します。

S2Flexを用いたModuleをModuleLoaderでロード・アンロードすると
何故かメモリが残ったままになってしまいます。
S2Flexを使用していないModuleではメモリ解放が確認できました。

自分のソースが悪いのかどうなのかも分からず困っております。

お忙しい所、お手数お掛けしてしまい本当に申し訳ございませんが
何が問題なのかご教示頂けませんでしょうか?

環境
・flexSDK Flex 3.1
・s2flex2-components.swc
・s2-flex2-1.1.1-rc1
・s2-framework-2.4.29
・JDK6
・Tomcat5.0.28

以下ソースです
-Main.mxml-----------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical">

    <mx:ApplicationControlBar width="100%">
        <mx:Button label="load" click="load()"/>
        <mx:Button label="unload" click="unload()"/>
    </mx:ApplicationControlBar>

    <mx:ModuleLoader id="mloader"
        width="100%" height="100%"/>

    <mx:Script>
        <![CDATA[
            private function load(): void
            {
                mloader.url = "S2FlexSample1.swf";
                mloader.loadModule();
            }
            private function unload(): void
            {
                mloader.unloadModule();
            }
        ]]>
    </mx:Script>
</mx:Application>
--------------------------------------------------

-S2FlexSample.mxml--------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Module
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:s2flex="memory.web.s2flex.*"
    width="100%" height="100%">
    <s2flex:Sample1/>
</mx:Module>
--------------------------------------------------

memory.web.s2flexパッケージ
-Sample1.mxml-------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:seasar="http://www.seasar.org/s2flex2/mxml"
    xmlns:s2flex="memory.web.s2flex.*"
    width="100%" height="100%">
    <seasar:S2Flex2Service id="service"
        destination="sampleService" showBusyCursor="true"/>
        <s2flex:Sample1Page id="page"/>
        <mx:Image source="image/dummy.jpg"/>
</mx:Panel>
--------------------------------------------------

-Sample1Page.as-----------------------------------
package memory.web.s2flex {
  import flash.events.Event;
  import mx.controls.Alert;
  import mx.rpc.events.FaultEvent;
  import mx.rpc.events.ResultEvent;
  import memory.web.AbstractPage;

  [Bindable]
  public class Sample1Page extends AbstractPage {

    override public function onCreationComplete(event: Event): void {
      super.onCreationComplete(event);
      getMessage();
    }

    public function getMessage():void {
      remoteCall(service.getMessage(),
                  getMessageOnSuccess,
                  getMessageOnFault);
    }

    public function getMessageOnSuccess(e:ResultEvent
                                        ,token:Object=null):void {
      Alert.show(e.result as String);
    }

    public function getMessageOnFault(e:FaultEvent
                                        ,token:Object=null):void {
      Alert.show(e.message as String);
    }
  }
}
--------------------------------------------------

Java
-SampleService.java-------------------------------
package memory.web;

public interface SampleService {
  public String getMessage();
}
--------------------------------------------------

-SampleServiceImpl.java---------------------------
package memory.web.impl;

import org.seasar.flex2.rpc.remoting.service.annotation.RemotingService;
import memory.web.SampleService;

@RemotingService
public class SampleServiceImpl implements SampleService {
  public SampleServiceImpl() {
  }

  public String getMessage(){
    return "Server Message";
  }
}
--------------------------------------------------

長々とソースを貼ってしまい申し訳ありません。
何卒、よろしくお願い致します。



akabana-user メーリングリストの案内