Rhino:jQueryでメモリリーク?
Last-modified: 2013-08-24 (土) 02:14:21 (3870d)
Top / Rhino:jQueryでメモリリーク?
Rhino:jQueryでメモリリーク? †
Rhino+envjs+jQueryで、jQueryオブジェクトをバンバン作ると、OutOfMemory?が発生する事象に遭遇。
スレッドダンプとってみると、こんな感じでした。
num #instances #bytes class name ---------------------------------------------- 1: 3813197 152527880 org.mozilla.javascript.ScriptableObject$Slot 2: 332180 36329664 [Lorg.mozilla.javascript.ScriptableObject$Slot; 3: 651485 26059400 org.mozilla.javascript.ScriptableObject$RelinkedSlot 4: 313764 15060672 org.mozilla.javascript.NativeObject 5: 134345 13340688 [C 6: 14186 7705328 [Ljava.lang.Object; ・・・以下省略
このタイミングでは、150MBとくらい消費していて、時間が経つにつれてたん純増する感じでした。そして、このまま使用量は増加の一途たどり、最終的にはOutOfMemory?でお亡くなりに、、、w
※スレッドダンプのとり方はこちら→Java:スレッドダンプをとる
実行したJSはこんな感じ。
function getContentsHtmlText(url){ var res = $.ajax({ url: url, async : false, error : function(xhr,status,error){ print("error: status=" + xhr.status + status + error); } }); return res.responseText; } function scrapeBodyText(contentHtml){ return $(contentHtml).find('#body').text();
getContesHtmlText?関数は繰り返し実行しても問題なかったけど、scrapeBodyText?関数をJava経由で繰り返し実行すると、先のスレッドダンプの状況になります。
jQueryバンバン使いたくてRhino使ってみたんだけど、これじゃあなー、、、