[Seasar-user:18857] Re: Teeda-Ajaxでのメモリ増加

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2009年 11月 6日 (金) 17:32:53 JST


米林です。

添付のajax.jsで再度試していただけますか。

AjaxPage.javaとajax.htmlも最小にしました。
あわせて添付します。

宜しくお願いします。


[E-MAIL ADDRESS DELETED] さんは書きました:
> 米林です。
> 
> サンプルありがとうございます。
> 今すぐ時間は取れないですが、試してみます。
> 
> 宜しくお願いします。
> 
> 高橋 良子 さんは書きました:
>> お世話になります。
>> 高橋(良)です。
>>
>> いろいろと手間取り、返信が遅くなりました。
>> 申し訳ありません。
>>
>>> startAutoUpdateが呼ばれるタイミングはどうなっていますか?
>> チェックボックスの onclickで setAutoUpdate() を呼び出し、そこから
>> 呼ばれます。
>>
>>> 例えば、TeedaAjaxをやめて同一サンプルをjQueryで動かして
>>> メモリリークが無ければTeedaAjaxでしょうし、メモリリークが
>>> 同様に起これば別処理になりますので。
>>>
>>> teeda-html-exampleに上書きして動作するサンプルがあると
>>> 解決しやすいと思います。
>>> 最小構成で作成可能でしょうか?
>> jQueryへの移行は少々難しいので、teeda-html-example の ajax.html
>> および AjaxPage.javaに手を加えて実行しました。
>>
>> <ajax.html>
>>
>>   -- (略) --
>>
>>   var	isLoop;
>>   function ajax_ajaxPage_ajaxLoopAjax(res){
>>     var result = $i('loopResult');
>>     result.innerHTML = res;
>>
>>     if (isLoop) {
>>       setTimeout("startLoopAjax()", 10000);
>>     }
>>   };
>>
>>   function startLoopAjax() {
>>     Kumu.Ajax.executeTeedaAjax(ajax_ajaxPage_ajaxLoopAjax, [],
>> Kumu.Ajax.RESPONSE_TYPE_TEXT);
>>   };
>>   var loopAjax = function() {
>>     setTimeout("startLoopAjax()", 10000);
>>     isLoop = true;
>>   };
>>   var loopStop = function() {
>>     isLoop = false;
>>   };
>>
>>
>>   KumuEventConf = {
>>     'click_loopAjax' : loopAjax,
>>     'click_loopStop' : loopStop,
>>     'click_startAjax' : startAjax,
>>     'click_startAjaxObject' : startAjaxObject,
>>     'click_startAjaxList' : startAjaxList,
>>     'change_sample1' : combinationList
>>   }
>> //]]>
>> </script>
>>
>> </head>
>> <body>
>>
>>   -- (略) --
>>
>> <p>繰り返し</p>
>>
>> <div id="loopResult">ここが変わります</div>
>> <input type="button" value="Loop Ajax" id="loopAjax" />
>> <input type="button" value="Loop Stop" id="loopStop" />
>>
>> <hr/>
>>
>>   -- (以下略) --
>>
>> AjaxPage.java : 以下を追加
>>
>>   private static int	count = 0;
>>   private final String	loopRes =
>> "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
>>
>>   public String ajaxLoopAjax() {
>>     count++;
>>     return "Loop Ajax " + count + ":" + loopRes;
>>   }
>>
>>
>> [Loop Ajax]ボタンを押す前のメモリ使用量
>>
>>   30.2 MB
>>
>> 300回実行後(= 50分後)、[Loop Stop]ボタンを押した後のメモリ使用量
>>
>>   36.7 MB
>>  
>> となりました。
>> ブラウザは IE6、メモリ使用量は フリーソフトの Process Explorer で
>> ブラウザ指定で計測しています。
>>
>> 何か原因がわかりますでしょうか。
>>
>>
>> 高橋(良)
>>
>> [E-MAIL ADDRESS DELETED] さんは書きました:
>>> 米林です。
>>>
>>> startAutoUpdateが呼ばれるタイミングはどうなっていますか?
>>>
>>> 頂いた情報だけですとTeedaAjaxでメモリリークが起こっているか
>>> どうか、確証が持てないです。
>>> 例えば、TeedaAjaxをやめて同一サンプルをjQueryで動かして
>>> メモリリークが無ければTeedaAjaxでしょうし、メモリリークが
>>> 同様に起これば別処理になりますので。
>>>
>>> teeda-html-exampleに上書きして動作するサンプルがあると
>>> 解決しやすいと思います。
>>> 最小構成で作成可能でしょうか?
>>>
>>> よろしくお願いします。
>>>
>>> 高橋 良子 さんは書きました:
>>>> はじめまして。
>>>> 高橋(良)と申します。
>>>> よろしくお願いします。
>>>>
>>>> Teeda-Ajaxを使用してサーバからデータを参照する処理を、
>>>> setTimeout()により繰り返し実行しているのですが、ブラウザの
>>>> 使用メモリが増加してしまいます。
>>>> メモリ消費箇所を特定するために、あちこち省いていったら、
>>>> 以下のAjax処理を繰り返すのみが残りました。
>>>>
>>>> var autoUpdateID;
>>>> var autoUpdateTimer = 10*1000;
>>>> var ajaxProcess;
>>>>
>>>> function XXX_ajaxUpdate(response) {
>>>>   clearTimeout(autoUpdateID);
>>>>   autoUpdateID = setTimeout("startAutoUpdate()", autoUpdateTimer);
>>>> }
>>>>
>>>> //自動更新 Ajax処理 (Teeda-Ajax)
>>>> function startAutoUpdate() {
>>>>   if (ajaxProcess) {
>>>>     ajaxProcess.cancel();
>>>>   }
>>>>   ajaxProcess = null;
>>>>
>>>>   ajaxProcess = Kumu.Ajax.executeTeedaAjax(
>>>>                              XXX_ajaxUpdate,
>>>>                              [param1, param2, param3],
>>>>                              Kumu.Ajax.RESPONSE_TYPE_TEXT);
>>>> }
>>>>
>>>> //自動更新処理開始/停止
>>>> function setAutoUpdate(obj) {	//<- objはチェックボックス
>>>>   if (obj.checked) {
>>>>     autoUpdateID = setTimeout("startAutoUpdate()", autoUpdateTimer);
>>>>   } else {
>>>>     clearTimeout(autoUpdateID);
>>>>   }
>>>> }
>>>>
>>>> 上記の処理ではメモリは一切増えないでほしいのですが...。
>>>>
>>>> メモリの増加量は、サーバからの送信データ量に比例しているようです。
>>>>
>>>> 使用ブラウザは IE6, Firefox3.5で、Firefoxのほうが増加量が多いです。
>>>>
>>>> 原因は何が考えられるでしょうか。
>>>>
>>>>
>>>> 高橋(良)
> 
> 
> 


-- 
米 林   正 明
http://www.abby.co.jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: teedaajax.zip
Type: application/x-zip-compressed
Size: 6848 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20091106/3d052221/attachment.bin>


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