我有一个非常大的树结构,1)在程序运行期间不经常删除节点,2)从自定义分配器获取其节点,该分配器有自己对节点所断开的内存块的引用.
有什么办法可以阻止GC扫描树吗? 理想情况下,我想要类似
core.memory.GC.removeRoot()
的东西,它适用于以前未通过 core.memory.GC.addRoot()
添加的根,但我对任何能给我这种效果的东西都很好(也许是一种关闭特定模块的 GC 的方法(除非通过 GC.collect()
)?) 显式调用。
当您分配内存时,如果您自己使用 GC.malloc 而不是普通的
new
运算符进行分配,则可以向其传递一个 NO_SCAN 标志,然后 emplace
您的结构位于顶部。但要格外小心,因为如果不对其进行扫描,它所指向的东西很可能会在您身上消失并导致疼痛。