Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript V8不能清除所有垃圾_Javascript_V8_Embedded V8 - Fatal编程技术网

Javascript V8不能清除所有垃圾

Javascript V8不能清除所有垃圾,javascript,v8,embedded-v8,Javascript,V8,Embedded V8,我在清理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 = [];

我在清理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);
    }
}
var bigstring=“ASD”;
对于(var b=0;b<20;b++){
bigstring=bigstring+bigstring;
}
跟踪(“bigstring”+bigstring.length);
函数框架(){
//产生一些垃圾
var junkArray=[];
对于(变量i=0;i<1000;i++){
junkArray.push(i+bigstring);
}
}
<>从C++中,我运行一个循环:

  • 调用
    frame
  • 收集垃圾:
    while(!V8::IdleNotification()){}
预期结果是每次迭代都会收集
junkArray
垃圾。毕竟,
IdleNotification
仅在“V8已经完成了尽可能多的清理”时返回true

事实上,大约每100次迭代只清理一次垃圾。我漏了一步吗?由于某种原因,
junkaray
不是在
frame
之后立即成为垃圾吗


*通过比较堆使用前后来确定,而不是使用
v8::v8::IdleNotification
,尝试使用
v8::Isolate::LowMemoryNotification
。据我所知,这是让最新的V8版本通过公共API执行完整GC的唯一方法