【Java JVM】对象如何进入老年代

正常我们创建一个对象,都会直接进入新生代的Eden区,那一个对象有哪几种方法可以进入老年代呢?

对象进入老年代,有三种情况:
1.占用内存较大的对象,直接进入老年代,这个“大”由参数-XX:PretenureSizeThreshold来决定,超过这个参数设置的值就直接进入老年代,例如很长的字符串、很大的数组。
2.正常创建一个对象,对象内存布局,包含三部分信息(对象头、实例数据、对齐数据),对象头中存储的就是两部分信息,一部分是对象的运行时数据(GC年龄、锁信息等),一部分是类型指针,GC年龄在对象初始化时,为1,每经过一次minorGC年龄增1,达到系统设置XX:MaxTenuringThreshold年龄值之后,进入老年代
3.当一个对象从Eden区到了Survivor区,当 Survivor 空间中相同年龄所有对象的大小总和大于 Survivor 空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,而不需要达到默认的分代年龄

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容