垃圾回收算法:
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垃圾收集算法与垃圾收集器
四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old、G1 JVM调优:命令行指令,设置堆内存大小的参数
这篇博客将探讨JVM中的基本垃圾回收算法,帮助我们更好地理解JVM内存管理的原理。 1. 标记-清除(Mark-Sweep)算法 这是最早的垃圾回收算法之一。它分为两个阶段:标记和清除。首先,从根节点开始遍历所有可达对象...
第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old收集器 1.2 ParNew收集器 1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS...
JVM垃圾回收机制通过两种主要算法来确定对象是否成为垃圾,即“可达性分析算法”和“引用计数法”。 - 可达性分析算法:这种方法通过确定对象的引用链来判断对象是否可达。GC根对象包括虚拟机栈中引用的对象、方法...
2. **垃圾回收算法**: - **标记-清除(Mark-Sweep)**:首先标记出所有活动对象,然后清除未标记的对象。缺点是容易产生内存碎片。 - **复制(Copying)**:将内存分为两块,每次只使用一块,当一块用完后,将...
### JVM垃圾回收原理详解 #### 一、相关概念与基本回收算法 在深入探讨JVM垃圾回收机制之前,我们先了解几个重要的概念及其工作原理。 ##### 1. 引用计数(Reference Counting) 引用计数是一种较为古老且简单的...
二、垃圾回收算法 1. 标记-清除(Mark-Sweep):标记所有可达对象,然后清除不可达对象。缺点是容易产生碎片。 2. 复制(Copying):将内存分为两块,每次只使用一块,当一块满时,将存活对象复制到另一块,然后...
垃圾收集器是垃圾回收算法的落地实现,包括 Serial 串行垃圾收集器、Parallel 并行垃圾收集器、CMS 并发垃圾收集器、G1 垃圾收集器等。不同的垃圾收集器适用于不同的应用场景。 在 Java 中,可以通过命令行参数来...
JVM垃圾回收算法总结 垃圾回收算法是Java虚拟机(JVM)中的一种机制,用于回收无用的对象以释放内存空间。垃圾回收算法可以从不同的角度划分,下面是常见的垃圾回收算法: 1. 引用计数(Reference Counting) ...
《详解JVM的垃圾回收算法》 垃圾回收是Java虚拟机(JVM)管理内存的重要机制,它自动识别并清理不再使用的对象,以避免内存泄漏。本文将深入探讨JVM的垃圾回收算法及其细节,包括可达性分析、根节点枚举、安全点、...
JVM提供了多种垃圾收集器,如Serial、ParNew、Parallel Scavenge、CMS(Concurrent Mark Sweep)、G1(Garbage-First)等,每种收集器都有其适用场景和优化策略。例如,CMS收集器适用于响应时间要求较高的应用,而G1...
【JVM垃圾收集器概述】 Java虚拟机(JVM)的垃圾收集器是自动管理内存的重要组成部分,负责识别不再使用的对象并释放它们所占用的内存,以防止内存泄漏。垃圾收集器的选择和配置对应用程序的性能有着显著影响,特别...
本篇文章主要探讨了JVM内存管理、垃圾收集器及其优化策略。 首先,Java的内存管理主要包括对象的分配与回收,主要发生在堆内存中。堆被划分为新生代和老年代,新生代又细分为Eden、From Survivor和To Survivor空间...
Tracing 算法是一种基于图论的算法,它将所有的引用关系看作一张图,从一个节点开始,遍历所有可达的节点,并标记这些节点,然后,垃圾收集器会清除所有未被标记的节点。 Tracing 算法可以解决循环引用问题,但是它...
理解JVM垃圾回收机制对于优化Java应用性能至关重要。 1. **垃圾回收的基本概念** - **对象生命周期**:在Java中,对象的生命周期包括创建、使用和销毁。当对象不再被引用时,就被认为是“垃圾”。 - **垃圾回收器...
Java 堆也是垃圾收集器管理的主要区域,如果从内存回收的角度看,由于现在收集器采用分代收集算法所以可以分为老年代和新生代,再细致有 Eden 空间、from 空间、to 空间,但是无论怎么划分,它都是只是存储对象实例...
二、垃圾收集器分类 1. Serial GC:单线程的垃圾回收器,适合轻量级或者对响应时间要求不高的应用。它在进行垃圾回收时会暂停其他所有工作线程,也称为"Stop-The-World"事件。 2. ParNew GC:Serial GC的多线程...