⼀个对象从加载到JVM,再到被GC清除,都经历了什么过程?
- ⾸先类加载器把
字节码⽂件内容加载到⽅法区
,当然类加载器这中间用双亲委派机制
加载 - 然后再根据加载完方法区中的类信息在堆区
为对象分配内存丶初始化零值丶设置对象头丶执行 init 方法
- 对象⾸先会分配在
堆内存中新⽣代的Eden
。然后经过新生代GC
,对象如果存活,就会进⼊S区。- 在后续的每次GC中,如果对象⼀直存活,就会在S区来回拷⻉,每移动⼀次,年龄加1。
- 多⼤年龄才会移⼊⽼年代? 年龄最⼤15, 超过⼀定年龄后,对象转⼊⽼年代。
- 当创建对象的⽅法执⾏结束后,栈中的指针会先移除掉了,对象就没有
GC Roots
根节点的引用了 - 然后GC根据
可达性分析法
,判断对象是否可以被回收, 经过Full GC,被标记为垃圾 - 然后被GC线程清理掉。
点赞.靓仔!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。