2016-06-20 3 views
0

私は一度に数日間ディスプレイ上で実行されることを意図して、束の写真を無期限にスクロールする簡単なシングルページアプリケーションを持っています。ブラウザのメモリをJavascriptでクリアする方法

スクロール写真が多数あるため、Chromeでのメモリ使用量は増え続けています。私はプログラム的にメモリ消費量を(数時間ごとに)間隔を空けて減らす方法が必要です。

アニメーションをプログラムで停止すると、メモリフットプリントはまだダウンしません。 location.reload();でページをリロードしても、それはダウンしません。

これを行う方法はありますか?タブを閉じるのと同じ効果を持つプログラムで「すべてをクリア」する方法はありますか?

参考までに、Firefoxではメモリに問題はありません。ちょうどChromeで。コードは非常にシンプルで、requestAnimationFrameを使用して画面上の2つのdivを常にアニメーション表示します。私は参照をどこにも蓄積していません。私の質問は、具体的には自分のコードではなく、タブのメモリをリセットできる一般的な方法についてです。

+0

これは、Chromeの開発者に報告する価値のあるメモリリークのようです。 – apokryfos

答えて

0

location.reload(true)を使用すると、すべてのメモリ(キャッシュなど)がクリアされます。さらに、ブラウザのストレージをさらにクリアしたい場合は、JavaScriptコードにlocalStorage.clear()を使用することができます。このような内容を保存している場合は、localStorageに保存されている項目がクリアされます。 localStorage.myItem = "something"

0

メモリリークが発生しているChromeまたはFirefoxのメモリデバッガで確認してください。見つかったら、どうすればこのオブジェクトをクリーニングできますか。

メモリリークの合理的な原因は、次のとおりです。

  1. あなたは大きな画像をロードするには、サーバー上のサイズを変更する必要がある、または単に 小さなキャンバス
  2. にそれを描くあなたはあまりにも多くのDOM要素を持っている(のための の例10000以上)
  3. というjsオブジェクトがいくつかありますが、それをクリーニングしないでください。

タスクマネージャでは、メモリの使用量が非常に多いことがわかります。アドレスバーにabout memoryを置いて、「Measure」ボタンを押すと、firefoxで何が起こっているのかを知ることができます。

関連する問題