深入理解java虚拟机第三章总结

本文深入探讨了垃圾收集器的工作原理与内存管理策略,包括引用计数、可达性分析、标记清除、复制算法及标记整理算法。同时,介绍了serial、ParNew、ParallelScavenge、CMS和G1等多种垃圾收集器的特点与应用场景。

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

垃圾收集器和内存分配策略

本书是基于jdk1.7所写

1引用计数算法:算法简单,原理:给对象添加一个引用计数器,每当有一个地方引用了他,计数器就加一,当引用失效就减一,计数器为0就是不可能再被使用的。缺点:无法解决对象之间相互循环引用的问题

2 可达性分析算法 :以“GC Root”为起始点,向下搜索,搜索所走过的路径称为引用链,当一个对象到起始点没有任何引用链相连接,证明此对象是不可用的

2.1对象的自我救赎

一个对象的死亡要经历至少两次标记过程,第一次被标记以后,该对象会被放置到一个F-Queue的队列中,如何在队列期间,该对象再次被引用了,那么就不会死亡。

3标记清除算法:首先标记出所有需要回收的对象,标记完成以后统一回收。缺点:效率不高,容易产生内存碎片。

4复制算法:将内存划为两块,每次只使用其中的一块,当其中一块内存用完了,就将存活的对象复制到另外一块上面去,然后把已使用的的内存空间一次清理掉。优点:效率较高,没有内存碎片

5标记整理算法:过程于标记清除算法一样,但后续步骤是让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。不会产生内存碎片。

垃圾收集器:

serial收集器:单线程的特点,在收集垃圾时会停止其他一切工作的线程。

ParNew收集器:serial收集器的多线程版本。

Parallel Scavenge收集器:设计目的是达到一个可控制的吞吐量。吞吐量 = 运行用户代码时间/(运行用户代码时间+垃圾收集时间)

CMS收集器:是一种获取最短回收停顿时间为目标的收集器。过程分为四个步骤:初始标记,并发标记,重新标记,并发清除

缺点:对cpu资源非常敏感,无法收集浮动垃圾,有内存碎片。

G1收集器:特点:并行也并发,分代收集,空间整合,可预测的停顿。设计思路:将整个java堆划分为多个大小相等的独立区域,每次回收回收价值大的区域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值