全国服务热线:400-035-8011

位置:济南IT培训学院 > 学校动态 > Java垃圾回收算法

Java垃圾回收算法

来源:济南IT培训学院时间:2021/1/9 15:54:22

  垃圾回收的基础思想是什么?

  目前JVM的主流垃圾回收器采取的都是可达性分析算法。该算法的实质是将一系列被称为GC Roots的对象作为初始的存活对象合集,然后从该合集出发探索所有能够被该集合引用到的对象,并标记为存活对象。当标记阶段结束之后,未被标记到的对象便是可以清除的。

  传统的垃圾回收算法在标记、清除过程中需要中止其他应用线程,即所谓的Stop-The-World。新型的垃圾回收算法,如CMS、G1以及ZGC,尽可能地实现并发标记、清除,从而让Stop-The-World的时间长度可控。


Java垃圾回收算法


  垃圾回收的另一基础思想则是分代回收。JVM会将新生成的对象划为新生代,而将在多次垃圾回收中存活下来的对象划为老年代。JVM会为不同的分代设置不同的回收算法,从而达到新生代多收集、快收集,老年代少收集、全收集的目标。

  JVM垃圾回收算法

  标记-清除算法:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。

  复制算法:将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当一块内存用完了,将还存另外一块上面,然后在把已使用过的内存空间一次清理掉。

  标记-整理算法:标记过程与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所一端移动,然后直接清理掉端边界以外的内存。

  分代收集算法:一般是把Java堆分为新生代和老年代,根据各个年代的特点采用适当的收集算法。新生代都发现有大批对象死去,选用复制算法。老年代中因为对象存活率高,必须使用“标记-清理”或“标记-整理”算法来进行回收。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2009/news/307618/违者必究! 以上就是济南IT培训学院 小编为您整理 Java垃圾回收算法的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011