当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

JVM垃圾回收算法及垃圾收集器

发表于: 2012-02-20   作者:bsr1983   来源:转载   浏览次数:
摘要: 垃圾回收算法: 1、标记—清除算法      分为标记、清除两个阶段,首先标记所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。      缺点:一是效率问题,标记和清除过程的效率都不高;二是空间问题,标记清除后会产生大量不连续的内存碎片,可能会导致需要分配较大对象时无法找到足够的连续空间而触发下一次垃圾回收。 2、复制

垃圾回收算法:

1、标记—清除算法

     分为标记、清除两个阶段,首先标记所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。

     缺点:一是效率问题,标记和清除过程的效率都不高;二是空间问题,标记清除后会产生大量不连续的内存碎片,可能会导致需要分配较大对象时无法找到足够的连续空间而触发下一次垃圾回收。

2、复制算法

     将可用内存安装容量划分为大小相等的两块,每次只使用其中的一块,当这一块用完了,就将存活的对象复制到另一块内存上去,然后再把已使用的内存空间一次清理掉。

     现代商业虚拟机都采用这种算法回收新生代。

3、标记整理算法

       标记过程与“标记—清除”算法一样,接着将所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

4、分代收集算法

      当前商业虚拟机都采用的算法,只是根据对象的存活周期不同,将内存划分为几块,一般是划为新生代和老年代,然后根据各个年代的特点选用最适当的算法。


垃圾收集器:

1、Serial收集器

        只会用一条收集线程完成收集,在进行垃圾收集时必须暂停其他所有的工作线程直到收集结束。

        新生代采用复制算法,老年代采用标记—整理算法。

        虚拟机运行在Client模式下的默认新生代收集器。

2、ParNew

       ParNew其实就是Serial收集器的的多线程版本。

       许多运行在Server模式下虚拟机中首选的新生代收集器。

3、Parallel Scavenge收集器

       Parallel Scavenge收集器也是一个新生代收集器,也是使用复制算法,是并行的多线程收集器。

       主要关注吞吐量。

4、Serial Old

     Serial Old是Serial收集器的老年代版本,是一个单线程收集器,使用“标记—整理”算法。

5、Parallel Old收集器

       Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记—整理”算法。这个收集器是JDK1.6才开始提供的。

6、CMS收集器

      CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。使用“标记—清除”算法实现。运作过程分成四步:初始标记、并发标记、重新标记、并发清除。

7、G1收集器

     G1收集器是当前收集器技术发展最前沿成果,在JDK1.6Update14中提供了Early Access版本的G1处理器以供试用。

     G1收集器是基于“标记—整理”算法实现的收集器;它可以非常精确地控制停顿,既能让使用者明确地指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒,这几乎已经是实时Java垃圾收集器的特征了。

JVM垃圾回收算法及垃圾收集器

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
JVM是Java平台的核心,其垃圾回收机制也成为Java的一个标志性特性。本文介绍了一些JVM的垃圾回收算
原文地址:http://blog.lichengwu.cn/jvm/2011/09/19/jvm-garbage-collection-algorithms/ 在说垃圾
发现自己真的好久木有写博客了呃...一直只顾着看书做笔记什么的,也该是时候练练表达能力了!废话不
0. 垃圾回收算法概述 标记清除算法 | |--- 标记时间过长 | | | |--- CMS:通过初始标记、并发标记和
按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用
引用计数器算法 根搜索方法 标记清除算法Mark-Sweep 复制算法Copying 标记整理算法Mark-Compact 分
原文地址: http://blog.csdn.net/kingofworld/article/details/17718587 JVM内存模型总体架构图 程序
先看一眼JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代、非堆) 2.虚拟机栈 3.本地方法栈 (N
全文转载:http://pengjiaheng.iteye.com/blog/524024 作者:和你在一起 [from JavaEye] 为什么要分
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的 。 因此,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号