码迷,mamicode.com
首页 > 编程语言 > 详细

Jvm垃圾收集算法

时间:2017-07-08 21:01:56      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:对象   垃圾   清除   dump   使用   暂停   nbsp   标记压缩   基础   

标记-清除

标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象

 

技术分享

标记-整理

根据老年代的特点提出标记-整理算法。它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-整理算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。

技术分享

复制算法

新生代回收算法。将原有的内存空间分为三块,一块较大的Eden空间和两块较小的Survivor空间。每次使用Eden和一块Survivor。当对象回收时把存活的对象复制到另外一块Survivor空间。如果空间不够则直接进入老年代。

技术分享

技术分享

 

分代思想

依据对象的存活周期进行分类,短命对象归为新生代,长命对象归为老年代。

根据不同代的特点,选取合适的收集算法

少量对象存活,适合复制算法

大量对象存活,适合标记清理或者标记压缩

 

Stop-The-World

Java中一种全局暂停的现象

全局停顿,所有Java代码停止,native代码可以执行,但不能和JVM交互

多半由于GC引起

Dump线程

死锁检查

堆Dump

程序不断运行就有垃圾产生,大家就都得停下来,等收集完了,大家继续干活。让大家都停下来,时间长了肯定会不爽。

Jvm垃圾收集算法

标签:对象   垃圾   清除   dump   使用   暂停   nbsp   标记压缩   基础   

原文地址:http://www.cnblogs.com/jiumao/p/7137921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!