2014-12-16 1 views
0

я могу создать глобальные объекты сSpidermonkey: Как удалить глобальный объект

JS_NewCompartmentAndGlobalObject 

(SM 1.8.5) или аналогичной функцией

, но как я могу удалить глобальный объект. Насколько я знаю, глобальный объект укоренен и, следовательно, не GC. В конце я могу вызвать JS_DestroyContext, но для вызова JS_GC у меня должен быть контекст. Когда собирается глобальный сбор мусора?

ответ

1

Звонок JS_DestroyContext вызывает сбор мусора для восстановления памяти, используемой глобальным контекстом. Предположительно, вы должны установить JS::Rooted на JSVAL_NULL, прежде чем уничтожить контекст, чтобы при запуске GC не было корней стека глобального.

0

Прочтите эту тему topic. Вам нужно создать объект, используя var, если вы хотите удалить его в будущем. Или, если вы не хотите использовать его, просто поставьте ему null. если этот объект был создан без var, он не будет обрабатываться вашим GC, пока вы не закроете окно.