以下屏幕截图取自 IBM Heap Analyzer。
我想了解“使用 Finalize() 方法的对象数”和“实现 finalize() 方法的垃圾对象数”之间的区别。
以下屏幕截图取自 IBM Heap Analyzer。
我想了解“使用 Finalize() 方法的对象数”和“实现 finalize() 方法的垃圾对象数”之间的区别。
据我了解,“具有 Finalize() 方法的对象数”意味着堆上有 5 个具有 finalize 方法的活动对象。如果你有很多这样的,那么它们不会造成任何伤害——直到它们必须被 GC 处理。因此,这暗示着一些正在酝酿中的事情。
值“实现 finalize() 方法的垃圾对象数量”表示有多少对象已被垃圾收集,它们确实具有finalize()
方法。与上面的数字不同,这些是付出了代价的对象。
如果第一个数字很小并且这些对象寿命很长,则无需担心。
如果第一个数字很小而第二个数字很高,这意味着您有许多带有方法的短期对象,finalize()
这可能是一个问题,因为它会使 GC 运行成本更高。