我在我的cpp应用程序中使用了嵌入式v8。当我每秒从快照创建一个隔离(预先创建),并在十秒钟后调用isolate-> Dispose()。随着时间的流逝,RSS内存不断增加,并且该过程最终被系统终止。
将v8更新到最新版本。
创建:
Isolate::CreateParams create_params;
create_params.array_buffer_allocator = ArrayBuffer::Allocator::NewDefaultAllocator();
create_params.blob = &blob;
auto isolate = Isolate::New(create_params);
Local<Context> context = Context::New(isolate, NULL, global,
v8::MaybeLocal<v8::Value>(),
v8::DeserializeInternalFieldsCallback(
DeserializeInternalFields, static_cast<void*>(&w->deserialized_data)));
处置:
isolate->Dispose()
放置所有v8隔离株后,RSS应该返回到较低级别,但是RSS仍然很高。快照的大小约为40M,该过程开始后几秒钟,RSS的费用约为GB。