hotspot算法实现

原创 2018年04月17日 18:49:47

对于hotspot算法应该在解决这几个问题:

可达性分析是从根节点到最引用结尾吗?

不是的!
拿现在的方法区来说,一个应用有百兆之多,如果每个对象是从头找到尾,消耗的时间必然很长;
而且,可达性分析对GC的停顿很敏感。这句话的意思是可达性分析是要停留在一个时间点上的,如果不在一个时间点,引用必然发生变化,那么,可达性分析又有什么意义呢?
解决办法是,创建叫做oopmap的数据结构来解决该问题,就是说在完成类加载的时候,hotspot就把对象内什么偏移量的上是什么数据类型的数据计算出,存放到该结构中,那么在gc扫描中,就可以直接得到这些信息。

每一个对象都有oopmap结构?

也不是!
如果每个对象都有这样的对象,那么,对象太多了,这样,为了GC而消耗的内存也是巨大的。
为此,hotspot算法给出的解决方法是,创建一个安全点(safepoint),就是说,GC 不是在任何时候都可以进行,而是达到一个安全点之后才会进行,而安全点的产生是有方法调用,循环跳转,异常跳出等等产生。

程序会同时到达安全点吗?

不会!
对此,hotspot算法有俩中中断方式处理:

  1. 抢先式中断:当执行GC的时候,所有的程序都会中断,那么,当某些中短程序没有达到中断怎么办?让他恢复,继续执行到安全点。
  2. 主动式中断:这个方式中,程序主动去轮训中断标志,如果中断为true,那么久执行中断。这个中断标志的设置其实是和安全点重合的。

安全点能解决全部问题吗?

不能!
假设,一个线程进入了睡眠状态(执行Thread.sleep(),当前线程会立刻挂起),那么,当要执行GC的时候,这个线程如果一直在睡眠状态,永远达到不了安全点。怎么办嘞?
设置一个安全区域(safe region),当执行GC的时候,垃圾回收程序不会管有安全区域标志的线程。当该线程要离开方法区的时候,回去询问是否完成了GC,如果完成了,那么就继续执行;如果没有,等待指令离开

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lovergo/article/details/79979045

第3周:决策树模型(CART)、基于树的集成学习算法(随机森林、GBDT)-人工智能工程师直通车

-
  • 1970年01月01日 08:00

深入理解java虚拟机(四)垃圾收集算法及HotSpot实现

垃圾收集算法 一般来说,垃圾收集算法分为四类:最基础的算法便是标记-清除算法(Mark-Sweep)。算法分为“标记”和“清除”两个阶段:首先标记处需要收集的对象,在标记完成之后,再统一回收所有被标记...
  • zq602316498
  • zq602316498
  • 2014-08-22 15:01:22
  • 2179

HotSpot的算法实现

HotSpot的算法实现1.枚举根节点 从可达性分析中从GC Roots节点找引用为例,可作为GC Roots的节点主要是全局性的引用与执行上下文中,如果要逐个检查引用,必然消耗时间。 另外可达性...
  • sch20095100
  • sch20095100
  • 2015-06-22 10:18:05
  • 1142

HotSpot算法实现

GC Roots枚举的难点: 检查范围难度大,必须在快照中进行,时间敏感。 GC解释: ...
  • u013086392
  • u013086392
  • 2016-05-17 14:18:16
  • 183

Hotspot的三种GC算法

JVM内存分代图示              Serial Collector 是JVM在client模式下的默认GC方式,通过JVM参数 -XX:UseSerialGC 来指定。 ...
  • wdqqmms00544kiss
  • wdqqmms00544kiss
  • 2016-05-30 21:47:15
  • 479

HotSpot垃圾收集算法简介

经过对象存活算法的判定,可以得到一些等待被收集的垃圾对象。而这些对象要用什么方法收集呢?这里也是一个学问,有很多算法可以收集这些对象。下面简单介绍几种收集算法。分代收集思想当前大多数垃圾收集都采用“分...
  • ZW_KK
  • ZW_KK
  • 2017-04-09 21:17:31
  • 283

JVM 垃圾回收(GC)和HotSpot算法实现

JVM GC主要针对的是Java堆和方法区 如何判断对象已死: 可达性分析算法(Reachability Analysis):通过一系列的称为“GC Roots”的对象作为起点,从对象节点开始向下...
  • micoxi
  • micoxi
  • 2017-07-16 14:11:22
  • 154

hotspot算法源码

  • 2015年03月10日 17:35
  • 7KB
  • 下载

java虚拟机HotSpot 的 GC 算法实现

在HotSpot虚拟机上实现这些算法时,必须对算法的执行效率有严格的考量,才能保证虚拟机高效运行...
  • canot
  • canot
  • 2016-04-03 13:26:56
  • 1240

HotSpot的算法实现。

博文中的内容来源《深入理解Java虚拟机_JVM高级特性与最佳实践》这一本书,感激不尽。...
  • en_joker
  • en_joker
  • 2018-03-29 15:39:01
  • 13
收藏助手
不良信息举报
您举报文章:hotspot算法实现
举报原因:
原因补充:

(最多只允许输入30个字)