我正在處理的應用程序嵌入V8進行腳本編寫。爲了節省內存,我希望在不需要時關閉腳本組件,但由於某些原因,內存永遠不會返回到操作系統。如何釋放V8聲明的內存?
這裏是我的嘗試:
1.調用Dispose()上的持久性上下文處理
context.Dispose();
2.強制垃圾收集
while (!v8::V8::IdleNotification());
無的這對進程內存使用有任何顯着的影響。我可以清楚地看到腳本聲稱內存時的情況,但它不會再次下降。
我正在用ps -o rss
確定進程內存使用情況。我知道,找出一個進程使用的內存在沒有探查器的情況下實際上是不可能的,但我相信當V8放開內存時rss應該下降。
http://stackoverflow.com/questions/1421491/does-calling-free-or-delete-ever-release-memory-back-to-the-系統 – congusbongus 2013-03-08 11:56:20
Ouch。必須調查一下。如果有人已經解決了V8的問題,我仍然會感興趣 - 但我能想到的唯一解決方案是在分叉進程中加載v8並殺死那個。 – futlib 2013-03-08 12:46:46
是的,這確實發生在一個簡單的C程序:(仍然希望有關如何使操作系統回收內存的建議。 – futlib 2013-03-08 16:10:18