Можно ли получать уведомления, когда SpiderMonkey собирает (или собирается собрать) конкретную «вещь GC»?
В V8 есть «слабые дескрипторы», к которым привязаны обратные вызовы, они должны вызываться, когда V8 GC решает, что объект с дескриптором стал недостижимым. Даже если обратный вызов не вызывается (что возможно в соответствии с документацией V8), мы все равно можем проверить, собирается ли объект, на который указывает дескриптор, будет собран с помощью v8::Persistent<T>::IsNearDeath()
.
В SpiderMonkey у нас есть PersistentRooted, что является сильным ориентиром. Но мы не нашли способа безопасно ссылаться на объект слабым образом, поэтому мы можем проверить хотя бы одно (или несколько) из следующих условий:
- объект стал недоступен;
- объект собран;
- объект вот-вот будет собран;
- объект имеет только одну ссылку (которую содержит наше приложение)