AJAX で要求された HTML ページを処理のために jQuery オブジェクトにラップするときに、IE がメモリ リークを起こしている理由を突き止めようとしています。ユーザーがページにアクセスして何分または何時間も放置する場合があるため、ページは jQuery のajax
メソッドを 1 分間に数回使用して新しいデータを取得し、ページの重要な部分を新しい事前レンダリングされたデータに置き換えます。
この時点で、1 回の呼び出しに絞り込みまし$(data)
た。HTML 文字列をラップするために が呼び出されると、メモリが少し急増し、ガベージ コレクションが行われることはありません。時間の経過とともに数百 MB が使用され、ページをリロードするか、IE を再起動する必要があります。
このフィドルは問題を再現できます。AJAX を使用してページを要求し$(data)
、リークを誇張するためにタイトなループを呼び出します。Chrome と Firefox はどちらも期待どおりに反応しているように見えます (メモリが再利用されます) が、IE の動作はよくありません。サプライズ。
Process Explorer を使用すると、上記のフィドルを 2 回実行しただけで、メモリ消費量が劇的に急増することがわかります。
現在、IE9 を標準モードで使用しています。
なぜこうなった?回避策はありますか?
アップデート
これは、AJAX を使用せずに問題を示すフィドルです。