有人能解释一下为什么堆空间达到最大值后会立即清除吗?
r9f1avp51#
在JVM中,内存是通过几代来管理的:根据对象被使用的时间,它可能被提升并从年轻代移动到较老代,或者如果它不再被使用,则它可能被清除。当您看到堆的小规模清除时,这意味着只有年轻代中的对象被清除。当您看到堆的大规模清除时,这意味着垃圾收集器完成了一个完整的工作,并且还清理了旧代。当全局堆大小接近其最大大小时,GC决定进行一个完整的工作。
1条答案
按热度按时间r9f1avp51#
在JVM中,内存是通过几代来管理的:根据对象被使用的时间,它可能被提升并从年轻代移动到较老代,或者如果它不再被使用,则它可能被清除。
当您看到堆的小规模清除时,这意味着只有年轻代中的对象被清除。当您看到堆的大规模清除时,这意味着垃圾收集器完成了一个完整的工作,并且还清理了旧代。当全局堆大小接近其最大大小时,GC决定进行一个完整的工作。