Приложение, в котором я работаю над вложениями V8 для создания сценариев. Чтобы сохранить память, я хочу отключить компонент сценария, когда он не нужен, но по какой-то причине память никогда не возвращается в ОС.Как освободить память, заявленную V8?
Вот что я пробовал:
1. Вызов Dispose() на постоянной связи не справиться
context.Dispose();
2. Силу сбора мусора
while (!v8::V8::IdleNotification());
Ни один из что оказывает заметное влияние на использование памяти процессов. Я могу ясно видеть, как это происходит, когда сценарий требует памяти, но он никогда не опускается.
Я определяю использование памяти процесса с помощью ps -o rss
. Я знаю, что выяснение того, сколько памяти использует процесс, на самом деле невозможно без профилировщика, но я верю, что rss должен спуститься, когда V8 отпустит память.
http://stackoverflow.com/questions/1421491/does-calling-free-or-delete-ever-release-memory-back-to-the- система – congusbongus
Ouch. Постараюсь немного разобраться. Все равно будет интересно, если кто-то решит проблему с V8, хотя единственное решение, о котором я могу думать, - загрузить v8 в разветвленный процесс и убить его. – futlib
Да, это действительно происходит с простой программой на C :(Все еще надеется на предложения о том, как заставить ОС восстановить память. – futlib