Rhino:jQueryでメモリリーク? の変更点
Top / Rhino:jQueryでメモリリーク?
- 追加された行はこの色です。
- 削除された行はこの色です。
- Rhino:jQueryでメモリリーク? へ行く。
- Rhino:jQueryでメモリリーク? の差分を削除
[[Java:jerichoを使ってHTMLをパースする]] *Rhino:jQueryでメモリリーク? [#ied7e8b6] 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使ってみたんだけど、これじゃあなー、、、