弱回撥
弱回撥主要用於清理嵌入在 v8::ObjectTemplate
中建立的 InternalField
中的 C++物件。當 JavaScript 物件被垃圾收集時,通常也必須刪除 C++物件。通過設定弱回撥,你可以獲得垃圾收集 javascript 物件的通知並採取適當的操作。
記住垃圾收集不是確定性的,這非常重要。你的程式可能會退出帶有從未呼叫的弱引用回撥的物件。這些回撥對於正常執行的長期執行程式非常重要,但不應依賴於以一致或快速方式釋放關鍵路徑資源。 **
為了讓垃圾收集器知道它何時應該執行,你必須告訴它你的 C++物件通過 v8::Isolate::AdjustAmountOfExternalAllocatedMemory
呼叫使用的空間量。這個呼叫的引數是位元組的變化,所以當你分配它時,你經常傳送 sizeof(T)
,當你清理你的弱引用回撥時,你會傳送 -sizeof(T)
。