Можно ли получать уведомление, когда SpiderMonkey собрал (или собирается собирать) конкретную «вещь GC»?Уведомление и слабые ссылки SpiderMonkey GC
В V8 есть «слабые ручки», к которым подключены обратные вызовы, они должны вызываться, когда V8 GC решает, что объект handle становится недоступным. Даже если вызов не вызван (что возможно в соответствии с документами V8), мы все равно можем проверить, собирается ли объект, на который указывает этот дескриптор, с помощью v8::Persistent<T>::IsNearDeath()
.
В SpiderMonkey у нас есть PersistentRooted, который является сильной ссылкой. Но мы не нашли какой-либо способ безопасно ссылаться на объект в слабом образом, чтобы мы могли проверить, по крайней мере для одного (или более) из следующих условий:
- объект стал недостижим;
- объект был собран;
- объект собирается собираться;
- объект имеет только одну ссылку (которая является один держит наше приложение)
Спасибо. Мы не используем полномасштабную библиотеку xul в нашем проекте (просто SpiderMonkey), поэтому мы не можем использовать Component.utils. Но финальный сборник «СОАЛасс» достаточно хорош для нашей задачи. Вам понадобится дополнительная работа по переносу не-объектов GCThings в JSObject, и это должно сделать трюк. –