我在内存中有很多长时间对象(~10GB),我绝对知道这些对象永远不会被GC收集。问题是标记扫描gc动作需要很长时间(90秒)来检查内存中的所有对象及其关系。我需要一些方法来跳过收集的对象。
我尝试使用Persistent::MarkIndependent
,但它对我不起作用。
答案 0 :(得分:3)
如果有问题的对象是通过C ++句柄实时保存的引用,那么它们将不会被收集。但是,收集器仍然必须遍历它们,因为它必须找到对它们包含的其他对象的所有引用。如果它没有这样做那么你可能会得到悬空指针并使VM崩溃。
所以,不,至少按照你描述的方式,不能做到。 (另一方面,如果这些对象不能包含随机指针,因为例如它们是数组缓冲区或字符串,那么GC知道它不需要遍历它们,因此不应该是性能问题。)