JVM 通过 垃圾收集-GC 自动管理内存堆中对象内存的分配和回收。JVM 通常采用分代垃圾收集器,以便于整理内存碎片。分代垃圾收集器就是基于对象不同生命周期,将堆分成不同的内存区域,然后组合使用不同的垃圾收集算法,可简单认为分为两部分组成:

  • Young Generation:年轻代,由Eden和两个相等的Survivor空间组成,其中一个Survivor始终为空,用来复制Minor GC后在Eden和另一个Survivor存活的对象。

  • Old Generation:老年代,对象生命周期比较长。

内存回收

内存回收主要考虑两个问题: