手動リカバリ?
、メモリ管理を妨害する方法はありません手動でガベージコレクションを強制する方法はありません開発者ので、ECMAScriptのは、任意のゴミ回収・インタフェースにさらされていません。
例数だけでは、開発者は、単に(ローカル変数)である必要があり、そのローカル変数に入れて手動でオブジェクト参照を持ち上げる必要がない、ごみは正しくリサイクルすることができ
V8のメモリ割り当て
変数と代入を宣言すると、V8は、ヒープメモリの可変部分に割り当てられます。アプリケーションは、変数格納するのに十分なメモリがない場合には、V8は、V8の上限にヒープメモリサイズアップするまで継続して適用されます。
ヒープメモリの割り当ては、次の2つの方法に分けられます。
- 静的割り当て、グローバル変数、分布関数など、ページが閉じていない前に、彼らは、それがクリアされません
- 動的割り当て、使用
new
アウトを作成するには、スペースを割り当てるために志願しました
親指のルール
オブジェクトを保持しませんガベージコレクタが不要になったChromeを作らないためには、心に留めておくべきことがいくつかあります。
- 適切に使用する変数のスコープでは、可能な限り、グローバル変数を回避するために、変数、関数宣言可能なアクションでローカル変数を宣言するための
- 例えば、不要になったイベントリスナーを削除しないようにしてください、バインドされたDOMオブジェクトのイベントを削除されようとしています
- 大量のデータが再利用されることはありませんキャッシングは避けてください
- 少ない閉鎖
永久的なメモリ書き込み
(1)グローバル変数、グローバル変数永続メモリは、ページを残して、ページを更新しない限り、クリアされます
(2)オブジェクト参照
function ob(){
var bar = new largeObject(); //很大一个对象\变量\字符串
bar.someCall();
return bar;
}
var a = new ob();
今へのポインタがあるbar
場合、オブジェクト参照は、ob
呼び出しの終わりに、bar
オブジェクトが可変するまで回収されないa
その他の参照の割り当て(またはa
スコープ外に出ます)。
(3)DOMイベント、DOM要素が削除された場合でも、イベントがない限り、そのは、結合再利用されることはありませんremoveEventListener
明示的にイベントを削除します
(4)タイマーを、明示的にタイマーをクリアしない限り、