是否可以跳过v8 GC收集的对象?

时间:2018-01-12 15:01:51

标签: node.js v8 node.js-addon embedded-v8

我在内存中有很多长时间对象(~10GB),我绝对知道这些对象永远不会被GC收集。问题是标记扫描gc动作需要很长时间(90秒)来检查内存中的所有对象及其关系。我需要一些方法来跳过收集的对象。

我尝试使用Persistent::MarkIndependent,但它对我不起作用。

1 个答案:

答案 0 :(得分:3)

如果有问题的对象是通过C ++句柄实时保存的引用,那么它们将不会被收集。但是,收集器仍然必须遍历它们,因为它必须找到对它们包含的其他对象的所有引用。如果它没有这样做那么你可能会得到悬空指针并使VM崩溃。

所以,不,至少按照你描述的方式,不能做到。 (另一方面,如果这些对象不能包含随机指针,因为例如它们是数组缓冲区或字符串,那么GC知道它不需要遍历它们,因此不应该是性能问题。)