私はキューとして使用配列のシーンを持っており、私はこのシーンのメモリについて質問しています。Javascript/Node.js配列メモリ管理
まず、グローバルに配列オブジェクトを作成し、要素を無条件に配列にプッシュするプロデューサを作成します。
var arr = [];
function runningProducer() {
setInterval(itemProducer, 50);
function itemProducer() {
var item = generateItem();
arr.push(item);
}
function generateItem() {
return { a: Math.random(), };
}
}
はその後、私は1秒
function runningCustomer() {
setInterval(clearQueue, 1000);
function clearQueue() {
var t = arr.concat(arr);
arr = [];
}
}
で配列をクリアして、一定の期間については、上記の機能を実行するために顧客を作成し、私はメモリが常に成長しました。
私は配列が空になった後にメモリを解放すべきだと思いますが、そうではないと思います。 私はこの質問についていくつかのsuggetionsを教えてください、そして、JavaScriptを手動でメモリを解放する方法はありますか?
ガベージコレクタの実行時にメモリが消去されます。アレイを空にするとすぐには消去されません。 – Barmar
'var t = arr.concat(arr);とは何ですか? 't'変数が他の場所で参照されていない場合は、行全体が冗長ですが、どこかで*参照されている場合(何らかの理由でコードに表示されていない)、その配列への参照(' arr'のサイズの2倍)まだ存在するので、メモリを使用し続けます。 – nnnnnn
プロデューサがアレイを使用しているため、メモリからアレイをクリアすることはできません。 –