Java 内存与垃圾回收调优
要了解 Java 垃圾收集机制,先理解 JVM 内存模式是非常重要的。今天我们将会
了解 JVM 内存的各个部分、如何监控以及垃圾收集调优。
Java(JVM)内存模型
正如你从上面的图片看到的,JVM 内存被分成多个独立的部分。广泛地说,JVM
堆内存被分为两部分——年轻代(Young Generation)和老年代(Old
Generation)。
年轻代
年轻代是所有新对象产生的地方。当年轻代内存空间被用完时,就会触发垃圾回
收。这个垃圾回收叫做 Minor GC。年轻代被分为 3 个部分——Enden 区和两个
Survivor 区。
年轻代空间的要点:
� 大多数新建的对象都位于 Eden 区。
� 当 Eden 区被对象填满时,就会执行 Minor GC。并把所有存活下来的对象转移到其
中一个 survivor 区。
� Minor GC 同样会检查存活下来的对象,并把它们转移到另一个 survivor 区。这样在
一段时间内,总会有一个空的 survivor 区。
� 经过多次 GC 周期后,仍然存活下来的对象会被转移到年老代内存空间。通常这是
在年轻代有资格提升到年老代前通过设定年龄阈值来完成的。
年老代