gc算法和垃圾收集算法

本文深入探讨了垃圾收集算法,包括引用计数法、可达性分析算法、标记-清除算法、复制算法、标记整理算法和分代收集算法。详细解析了各种算法的工作原理、优缺点及应用场景,帮助读者理解如何通过不同的垃圾收集策略优化Java应用性能。

1.引用计数法(已经不用)

     给对象加一个引用计数器,每当有一个地方引用,计数器加一,当引用失效,计数器就减一,任何时候计数器为0的对象就不可能在被使用

2.可达性分析算法

以“gc roots”为起点,向下搜索,节点走过的路径为引用链,任何一个对象到gc roots没有任何引用链就不可用,即回收

gc roots:类加载器,thread,虚拟机的本地变量表,static,常量,本地方法栈的变量等等

注:四种引用和垃圾回收两种标记(finalize())

知道大概可参考https://blog.csdn.net/tony_java_2017/article/details/80685148

废弃常量:当前没有任何String对象引用常量池中的字符串常量

无用类(可以回收不一定回收):(1)该类所有实例被回收

(2)该类的ClassLoader已回收

(3)该类的java.lang.Class对象没有任何地方被引用

 垃圾收集算法

1.标记-清除算法

效率上:不高

空间上:内存碎片多

复制算法(可用新生代中from   to)

分2块(a,b),用其中一块(a),用完后,进行垃圾回收,把活动对象复制到另一块(b),清理a

空间上:浪费空间

标记整理算法(老年代)

和标记清除的·标记过程一样,但后边不是直接回收,而是存货对象向前移动,再清除

分代收集算法

将内存分几块,一般将java堆分新生代和老年代,在结合上述算法,不同情况不同算法

java调优目的:减少full gc 次数和stw停顿时间,也是提高吞吐量

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值