共计 236 个字符,预计需要花费 1 分钟才能阅读完成。
在 jdk7 前,堆内存被分为新生代、老生代、永恒代三个区域。
jdk8 之后永恒代被彻底移除了,取而代之的是元空间。
新生代分为 eden 区,s0,s1 区。
对象首先在 eden 区调配,在一次新生代垃圾回收后,如果对象还存活,年龄 + 1 并进入 s0 或 s1 区,当年龄达到阈值(默认 15)会进入老生代。
动静年龄计算:hotspot 遍历所有对象,依照年龄大小对其所占用的大小进行累计,累计到 survivor 区的一半时,取这个年龄 MaxTenuringThreshold 中更小的值作为新的降职年龄。
正文完