美文网首页
Java的垃圾收集算法

Java的垃圾收集算法

作者: PaulLuv | 来源:发表于2018-06-20 21:34 被阅读2次

1. 标记-清除算法

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

缺点

  • 效率问题:标记和清除过程的效率都不高。
  • 空间问题:标记清除后会产生大量的不连续的内存碎片,空间碎片太多会导致在分配较大对象时无法找到足够的连续内存而触发垃圾收集动作。

2. 复制算法

将内存按容量划分为大小相等的两块,每次只使用其中的一块。当其中一块使用完了,将还存活的对象复制到另一块内存上,然后对当前内存块进行一次清理。

优点:每次都是对其中一块内存进行垃圾回收,内存分配不用考虑内存碎片问题,只需要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。
缺点:内存缩小为原来的一半,代价太高了一点。

3. 标记-整理算法

首先标记出所有需要清理的对象,然后让所有存活的对象向一端移动,然后清理掉边界以外的内存。

4. 分代收集算法

根据对象的存活周期不同,将内存划分成几块,针对对应内存块对象存活周期采用最合适的算法。
如新生代中,每次垃圾收集时都会发现大批对象死去,只有少量存活,就选用复制算法。而老年代中因为对象存活率高、没有额外空间对它进行分配担保,就必须使用标记-清除标记-整理算法来进行回收。

相关文章

  • Java垃圾收集算法介绍

    Java垃圾收集算法介绍 垃圾回收器GC(Garbage Collection) 一、引用计数算法(Referen...

  • JVM垃圾回收-STW(Stop-The-World)

    Stop the World机制:在执行垃圾收集算法时,为了保证正确性,Java应用程序的其他所有除了垃圾收集收集...

  • 第三章(二)GC

    本篇主要讲 垃圾收集算法 、 HotSpot的的算法实现 和 垃圾收集器。 垃圾收集算法 标记-清除算法 Mark...

  • Java虚拟机(JVM)调优

    一、Java内存结构 二、堆内存的构成 三、堆内存参数的调整 四、GC如何确定垃圾 五、垃圾收集算法 六、垃圾收集...

  • java - 垃圾收集算法

    1. 标记-清除算法 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象. 存在的问题: 效率问题...

  • Java垃圾收集算法

    当前Java垃圾回收主要有三种算法,然后根据不同情况,对三种算法进行结合,进行分代收集。 一. 标记-清除算法 1...

  • JVM垃圾回收

    GC垃圾回收流程 垃圾收集算法 垃圾回收算法 引用类型 垃圾回收的时机 1.垃圾收集算法 (1).引用计数算法含义...

  • 新手初学Java性能之 垃圾收集器

    前言 垃圾收集算法是内存回收的方法论;垃圾收集器是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现...

  • JVM系列之垃圾收集器

    如果说上一节说的垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现 简单的介绍Java的垃圾收集...

  • Java的垃圾收集算法

    1. 标记-清除算法 算法分为标记 清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收掉所有标记的对...

网友评论

      本文标题:Java的垃圾收集算法

      本文链接:https://www.haomeiwen.com/subject/rvetyftx.html