hostpot算法
2023-04-30 11:50:59 7 举报
AI智能生成
hostpot算法
作者其他创作
大纲/内容
GC的过程
判断对象是否是“活“的 - 对象存活判定算法
怎样回收“死”的对象 - 垃圾回收算法
两种算法的协调 - 直接影响到jvm的执行效率
准确式GC
缺点
1. 枚举是一个树状的数据类型,所以每次找节点都要全部扫描,影响效率
2.每次进行gc roots的,需要讲所有线程停掉,在快照中进行扫描,主要原因线程是并发的,gc roots随时在变换
解决方法 “准确式”GC,这种方法的原理就是在类装载后,对每一个对象生成oopmap数据类型,类型中记录的时对象的offset
安全点
准确式GC缺点:每一个对象都要产生一个oopmap,需要额外增加内存来存储
解决方法:使用安全点(safepoint)
原理:不是执行每一个指令就生成oopmap,而是在特定的点上生成oopmap,然后进行gc
怎样让所有 的线程都运行在安全点上,每一个线程运行速度不一样,就像不同的跑车有些跑的快,有些慢,等所有的线程都跑到安全点上才gc
被动式中断(抢占式中断):只要一条到了安全点所有线程都中断,检查哪些线程没有跑到安全点,继续跑,最后中断,就像在终点放一堵墙,强迫它停下来
主动式中断:在安全点设置一个标志,线程只要跑到这里就中断(轮询),就像终点线,到终点自己停下来
安全区域
安全点的缺点:当线程处于sleep和block状态时,线程是无法响应jvm终端的
解决方法:safe region
前提:在一段代码中,对象的引用不会变化的
在这个区域中,任一点上gc都是安全的
safe region时safe point的扩展
0 条评论
下一页