Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

JVM垃圾回收机制 PDF 下载


分享到:
时间:2024-04-17 10:52来源:http://www.java1234.com 作者:转载  侵权举报
JVM垃圾回收机制
失效链接处理
JVM垃圾回收机制  PDF 下载
 
 
 
相关截图:
 

主要内容:

问题1:哪些是需要回收的?
判断对象是否需要回收有两种算法。一种是引用计数算法、一种是可达性分析算法
引用计数算法
引用计数算法通过记录对象被引用的次数从而判断该对象的重要程度。如果该对象被其它对象引用,
则它的引用计数加一,如果删除对该对象的引用,那么它的引用计数就减一,当该对象的引用计数为0时,
那么该对象就会被回收。
引用计数存在什么问题呢?当有两个对象相互引用时,由于它们互相引用对方所以计数都不为零,这
就会导致这两个对象无法回收。所以,Java虚拟机采用的是另一种方法来判断对象是否存活,它就是可达
性分析算法。
可达性分析算法
可达性分析算法首先确定一系列根对象(GC Roots),并以根对象为起点根据对象之间的引用关系搜
索出一条引用链(Reference Chain),在引用链的对象就存活,而不在引用链的对象就认定为可回收对
象。
有一个比喻十分恰当:可达性分析算法就好比是在清洗葡萄串,我们可以从一根枝提起一大串葡萄,
他们就像一串引用链,而没有和引用链相连的对象就像是散落在池子里的葡萄,可以回收。
哪些对象可以作为根对象呢?
虚拟机栈中引用的对象(正在运行的方法使用到的变量、参数等)
方法区中类静态属性引用的对象(static关键字声明的字段)
方法区中常量引用的对象,(也就是final关键字声明的字段)
本地方法栈中引用的对象(native方法)
Java虚拟机内部的引用。(系统内部的东西当然能作为根了)
 
问题2:有哪些重要的垃圾回收算法?
1、标记-清除算法
标记-清除法是最基本的一种垃圾回收算法,总的来说分为两步:
标记:标记所有需要回收的对象(灰色),也就是在做垃圾的判定。
清除:将标记为灰色的部分,清除掉。
结束地址记录下来放入空闲列表里,表示这段内存是空闲的就行。优点是速度快,只需要做个标记就能知道哪一块需要被回收,但是缺点也是致命的。
主要缺点有两个:一是执行效率不稳定,二是会涉及到内存碎片化的问题
所谓标记复制算法和标记整理算法,都是对标记清除算法缺点的改进,所以才说标记清除算法是最基础的
方式。
2、标记-整理算法
与标记-清除算法不同,标记-整理算法是移动式的。他会让所以存活的对象都向内存空间一端移动,然后
清除到边界以外的内存
 
 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐