メモリーリークに近い話とは思いますが、ちょっと毛色の違う内容です。
「JavaScript がメモリーを馬鹿食いしてどうしようもない…」
「なぜかメモリーが確保されっぱなしなんだけど…?」
といった状況の解消法。
JavaScript にはガーベッジコレクタがあるから大丈夫…
と、思われがちですが、ガーベッジコレクタは『本当にメモリ解放が必要になるまで何もしない』というものです。
(状況が悪いとガーベッジコレクタは何もしてくれなくて、ブラウザが固まってしまいます。。)
「コストはかかるが、信用できないならプログラマが勝手にやってしまえ!!」という感じです。
ラベル メモリリーク の投稿を表示しています。 すべての投稿を表示
IE の メモリリーク不具合 まとめ (サンプルコード)
元ネタは こちら をご参照ください。
IE8 における JavaScript でメモリーリークを起こすコードパターンです。
ここにあげているパターンはすべてパッチリリース済みなので、パッチをあてれば解消できます。
逆に、パッチがあてられない場合、絶対書いてはいけないコードです。
innerHTML プロパティを頻繁に書き換える
frameset 要素を使う
window.open した先のウィンドウ内で循環参照を含む iframe 要素を使う
window.createPopup した先のウィンドウ内で window.createStyleSheet を使う
循環参照があるスクリプトで、onload、onerror、onunload イベントハンドラーを接続する
iframe から モーダルダイアログ を開いて、iframe を閉じる
innerHTML プロパティ ...
Akinari Tsugo
16:10
Internet Explorer,
JavaScript,
メモリリーク
IE のメモリリーク パターン(基本編)
IE6 の時代から言われ続けている、メモリーリークパターンを復習してみます。
あくまで基本編という扱いです。
ここにあるパターンは IE8 以降で一部解消されているようです。
循環参照
クロージャ
クロスページリーク
※IE8以降でメモリリークするパターンについては こちら をご参照ください。
循環参照
一言で"循環参照"、されど"循環参照"。
2つほどパターンがあるようなので、それぞれ取り上げてみます。
パターン1:DOM要素の独自プロパティがDOM要素を参照する
<html>
<head>
<script type="text/javascript">
// グローバル変数
var globalObject;
// メモリリークするコードを呼び出し ...
Akinari Tsugo
22:35
Internet Explorer,
JavaScript,
メモリリーク
IE の メモリリーク不具合 まとめ
.table {
border: 1px solid silver;
border-collapse: collapse;
}
.table th {
border: 1px solid silver;
background-color: #f6f6f6;
padding: 0.5em 0em;
}
.table td {
border: 1px solid silver;
padding: 0.5em;
}
Internet Explorer のメモリーリークは昔から本当に困りものです。。
システムテスト工程で言われた日にはどうしていいものか…。
そんな困りものの IE のメモリーリーク関連の情報をまとめをしてみます。
(ちなみに…Windows 7 を前提で話を進めさせてもらいます。つまるとこ IE8 以上。いま ...
Akinari Tsugo
23:24
Internet Explorer,
JavaScript,
メモリリーク