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

有井 貴志 [E-MAIL ADDRESS DELETED]
2008年 10月 16日 (木) 19:32:14 JST


有井です。

ふなくらさん、ご回答有難うございます。

メモリはお察しの通り、FlexBuilderのProfilerで確認しました。
loadしてunloadした後にメモリのスナップショットを見て確認しています。

正しくUnloadされたものは
ModuleにPanelを貼り付けて終わりという程度のもので、
特にEventListenerで処理しているものはありません。

よろしくお願い致します。

jun funakura さんは書きました:
> ふなくら(nod)です。
> 
> メールチェックを怠っていましたm(__)m
> 下記現象確認いたしますので
> 少しお待ちください。
> 
> componentsを作成したのは、moduleが出てくる以前だったので
> 確認していませんでした。
> 
> モジュールについては、過去にLoad/Unloadで問題がでていたり
> 過去のバージョンではメモリーリークが発生していたようです。
> 
> たとえば以下のフォーラムなど。
> http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=807&forum=2&post_id=3185
> 
> またAddEventListenerをしているなどでオブジェクトの参照が残って
> Unloadされない現象といったこともあるようです。
> 
> メモリに残っているというのを確認したのは、
> Profilerで確認したということでよろしいでしょうか。
> 正しくUnloadされたものは、どんな形で試されたか、
> EventListenerの処理をしているなど教えていただけますと
> 助かります。
> 
> 以上よろしくお願いいたします。
> 
> --
> 
> 
> 2008/10/14 20:34 有井 貴志 <[E-MAIL ADDRESS DELETED]>:
>> お世話になります。有井と申します。
>>
>> 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 mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/akabana-user
>>
> _______________________________________________
> akabana-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/akabana-user



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