据我所知,垃圾回收器从一些初始对象(堆栈、静态对象)开始递归遍历构建可达对象的图。然后将这些对象占用的内存标记为已使用,并假设所有其余内存都是空闲的。
但是如果这个“空闲”内存包含一个带有finalize方法的对象呢?垃圾回收器必须调用它,但我不知道它如何知道不再可达的对象。
我认为垃圾回收器可以在这些“可终结”对象还活着时跟踪它们。如果是这样,那么即使这些对象仍然存在,拥有可终结对象会使垃圾回收变得更加昂贵吗?
但是如果这个“空闲”内存包含一个带有finalize方法的对象呢?垃圾回收器必须调用它,但我不知道它如何知道不再可达的对象。
我认为垃圾回收器可以在这些“可终结”对象还活着时跟踪它们。如果是这样,那么即使这些对象仍然存在,拥有可终结对象会使垃圾回收变得更加昂贵吗?