V8 でゴミを片付けるのに苦労しています。まず、私のJavascriptは次のとおりです。
var bigstring = "ASD";
for (var b = 0; b < 20; b++) {
bigstring = bigstring + bigstring;
}
trace("bigstring " + bigstring.length);
function frame() {
// generate some garbage
var junkArray = [];
for (var i = 0; i < 1000; i++) {
junkArray.push(i + bigstring);
}
}
C++ から、ループを実行しています。
- コールし
frame
ます。 - ごみを集める:
while(!V8::IdleNotification()) {};
期待される結果は、反復ごとにjunkArray
ガベージが収集されることです。結局のところ、IdleNotification
「V8 ができる限りのクリーンアップを行った」場合にのみ true を返します(doc)。
実際、ゴミは片付けられるだけです*。100回の反復ごと。手順がありませんか?junkArray
直後はなぜかゴミじゃないframe
?
※前後のヒープ使用量を比較して決定