Javascript V8不能清除所有垃圾
我在清理V8中的垃圾时遇到问题。首先,我的Javascript如下所示: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 = [];
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的唯一方法