【发布时间】:2013-02-23 22:34:16
【问题描述】:
我正在开发的一个应用程序嵌入了V8 用于编写脚本。为了节省内存,我想在不需要时关闭脚本组件,但由于某种原因,内存永远不会返回给操作系统。
这是我尝试过的:
1.在持久上下文句柄上调用 Dispose()
context.Dispose();
2。强制垃圾回收
while (!v8::V8::IdleNotification());
这些都不会对进程的内存使用产生任何显着影响。当脚本要求内存时,我可以清楚地看到它是如何上升的,但它再也不会下降了。
我正在使用ps -o rss 确定进程内存使用情况。我知道如果没有分析器,就无法确定一个进程正在使用多少内存,但我确实相信当 V8 释放内存时 rss 应该会下降。
【问题讨论】:
-
哎哟。得调查一下。如果有人用 V8 解决了这个问题,我仍然会感兴趣 - 我能想到的唯一解决方案是将 v8 加载到一个分叉的进程中并杀死那个。
-
是的,这确实发生在一个简单的 C 程序中 :( 仍然希望有关如何让操作系统回收内存的建议。
-
我建议你也需要销毁你的
Isolate(Context执行的 V8 实例),如果 Isolate 是 'Enter()由您的Context编辑
标签: c++ memory embed v8 embedded-v8