在jdk7前,堆内存被分为新生代、老生代、永恒代三个区域。
jdk8之后永恒代被彻底移除了,取而代之的是元空间。

新生代分为eden区,s0,s1区。
对象首先在eden区调配,在一次新生代垃圾回收后,如果对象还存活,年龄+1并进入s0或s1区,当年龄达到阈值(默认15)会进入老生代。

动静年龄计算:hotspot遍历所有对象,依照年龄大小对其所占用的大小进行累计,累计到survivor区的一半时,取这个年龄MaxTenuringThreshold中更小的值作为新的降职年龄。