JAVA内存回收

本文介绍了Java中的垃圾回收机制,包括常用的引用计数和可达性分析方法。深入探讨了GCroots的概念及其构成,如虚拟机栈中引用的对象等。此外,还讲解了几种垃圾收集算法,如标记-清除、复制及标记-整理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GC:

      常用方法有引用计数和可达性分析。现在JAVA内部是不用引用计数的。

对于可达性分析会枚举GC roots,如果对象没有指向任何一条roots链,则会被标记,面临被清除的可能。如果该对象想拯救自己,那么它就需要执行一次finalize()。在finalize()中将自己引用于gc roots上对象相关联。要执行finalize()需要对象覆盖了finalize()方法,并且虚拟机没有执行过finalize()。执行了finalize(),也不一定不会被清理。


GC roots:

      虚拟机栈中引用的对象

      本地方法栈中引用的对象

      方法区中静态属性

      方法区中常量属性

      虚拟机在执行遍历GC roots时候,会挂起所有线程,造成程序停顿。而每当进行full gc时,会进行遍历。这时就要求程序合理编码,减少full gc次数。


垃圾收集算法:

     标记-清除

     复制

     标记-整理

     分代收集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值