JVM_6_HotStop的算法实现
来源:互联网 发布:飞天侠淘宝客系统8.0 编辑:程序博客网 时间:2024/06/05 19:41
这个章节,我看了一点点...稍微了解下,后面在做补充
枚举根节点
以可达性分析(根节点搜索算法)为例,它对执行时间的敏感体现在GC停顿上,因为这项分析工作必须在一个能确保一致性的快照中进行。
这里的一致性的意思:
整个分析期间整个执行系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况。
这点不满足的话 分析结果的准确性就无法得到保证。
(还记得之前那个 "妈妈打扫房间的栗子嘛...")
由于目前主流的Java虚拟机使用的都是准确式GC,所以当执行系统停顿下来之后,并不需要一个不漏的检查所有引用位置,虚拟机有办法自己得知。
在Hotpost虚拟机中使用OopMap的数据结构来达到这个目的。
注:
准确式GC,即虚拟机可以知道内存中某个位置的数据具体是什么类型。这样子才能在GC(垃圾收集)的时候准确判断堆上的数据是否还可能被使用。
安全点
在OopMap的协助下,HotSpot可以快速且准确的完成GC Roots枚举,但一个很现实的问题随之而来:
可能导致引用关系变化,或者说OopMap内容变化的指令非常多,如果为每一条指令都生成对应的OopMap,那会需要大量额外的空间。
这样子GC的空间成本会变得很高。
实际上,Hotspot也的确没有为每条指令都生成OopMap,只有在"特定的位置"才记录这些信息,这些位置称之为安全点。
在程序执行时并非在所有地方都能停顿下来开始GC,只有在到达安全点时才能暂停。
阅读全文
0 0
- JVM_6_HotStop的算法实现
- 梅西迭代算法的实现
- CRC算法的实现...
- Hanoi的实现算法
- 图算法的实现
- LRU算法的实现
- 组合算法的实现
- kruskal算法的实现
- KMP算法的实现
- 排序算法的实现
- RSA算法的实现
- PID算法的实现
- Adler32算法的实现
- LRU算法的实现
- 实现好的算法
- Dijkstra算法的实现
- AC_BM算法的实现
- 排序算法的实现
- Linear Regression(线性回归)
- 同济大学官网静态网页图
- linux C语言遍历文件夹所有文件
- robotium
- 书房的作用
- JVM_6_HotStop的算法实现
- VMware Fusion安装mini版Centos正确流程及错误示范
- 数据交互时中文乱码问题的解决方法总结
- Codeforces452F(MemSQL Start[c]UP 2.0)[Permutation]--线段树+Hash
- 批量提取文件名的经典方法
- hdu4496(并查集+逆向思维)
- 洛谷 [USACO1.1]黑色星期五Friday the Thirteenth
- android图片加载框架-磁盘缓存
- Mysql得到某个表的所有字段