JVM垃圾回收器

简介: JVM垃圾回收器

垃圾回收器(Garbage Collector)是负责执行垃圾回收的组件,它在Java虚拟机中进行自动内存管理。垃圾回收器负责检测无法被访问到的对象,并释放其占用的内存空间。

Java中,有多种不同的垃圾回收器可供选择,每个回收器都有不同的特点和适用场景。以下是常见的几种垃圾回收器:

1.      Serial回收器Serial回收器是最基本的、单线程的垃圾回收器。它通过暂停所有应用线程,进行垃圾回收操作,直到完成为止。Serial回收器适用于单核处理器或小型应用,但在大型应用中可能导致较长的暂停时间。

Serial 作用于新生代,采用复制算法

-Serial Old作用于老年代,采用标记-整理算法

2.      Parallel回收器Parallel回收器是Serial回收器的多线程版本,它使用多个线程并行执行垃圾回收操作。Parallel回收器适用于具有多个处理器核心且希望实现更高吞吐量的系统,但仍可能导致较长的暂停时间。**JDK8默认使用此垃圾回收器**

Parallel New作用于新生代,采用复制算法

Parallel Old作用于老年代,采用标记-整理算法

3.      CMS回收器CMSConcurrent Mark Sweep)回收器是一种并发的垃圾回收器,它通过与应用程序并发执行,减少垃圾回收过程中的停顿时间。CMS回收器适用于具有较短暂停时间要求的应用程序,但在处理大量垃圾对象时会产生内存碎片。

4.      G1回收器G1Garbage-First)回收器是一种面向服务端应用的垃圾回收器,它采用了分区和并发的方式来管理堆内存。G1回收器旨在提供可预测的短暂停时间,并有效地处理大堆内存。G1回收器可以根据应用程序的需求动态调整可用内存和停顿时间目标。--JDK9之后默认使用G1

其主要特点:

·        应用于新生代和老年代

·        划分成多个区域,每个区域都可以充当 edensurvivorold humongous,其中 humongous 专为大对象准备

·        采用复制算法

·        响应时间与吞吐量兼顾

·        分成三个阶段:新生代回收、并发标记、混合收集

·        如果并发失败(即回收速度赶不上创建新对象速度),会触发 Full GC

 

除了上述的垃圾回收器,还有其他一些特定用途或实验性质的回收器,如ZGCZ Garbage Collector)、ShenandoahEpsilon 等。这些回收器有着不同的特点和适用场景,可以根据具体应用程序的需求进行选择和配置。

需要注意的是,不同的垃圾回收器在性能、吞吐量、延迟等方面有所差异,开发人员可以根据应用程序的特点和需求选择合适的垃圾回收器,并通过调整JVM参数来优化垃圾回收的行为。

 

相关文章
|
24天前
|
存储 算法 Oracle
极致八股文之JVM垃圾回收器G1&ZGC详解
本文作者分享了一些垃圾回收器的执行过程,希望给大家参考。
|
2月前
|
存储 算法 Java
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
Java面试题:深入探究Java内存模型与垃圾回收机制,解释JVM中堆内存和栈内存的主要区别,谈谈对Java垃圾回收机制的理解,Java中的内存泄漏及其产生原因,如何检测和解决内存泄漏问题
48 0
|
2月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
45 0
|
2月前
|
Java
Jinfo 查看 jvm 配置及使用 Jstat 查看堆内存使用与垃圾回收
Jinfo 查看 jvm 配置及使用 Jstat 查看堆内存使用与垃圾回收
46 5
|
2月前
|
存储 算法 Java
JVM 垃圾回收算法与垃圾回收器
JVM 垃圾回收算法与垃圾回收器
34 3
|
1月前
|
算法 Java 应用服务中间件
探索JVM垃圾回收算法:选择适合你应用的最佳GC策略
探索JVM垃圾回收算法:选择适合你应用的最佳GC策略
|
2月前
|
监控 Java 运维
开发与运维收集问题之jstat命令查看JVM垃圾回收情况如何解决
开发与运维收集问题之jstat命令查看JVM垃圾回收情况如何解决
20 1
|
2月前
|
弹性计算 运维 Java
Serverless 应用引擎使用问题之JVM进行垃圾回收时重启,该如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 算法 Java
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
39 1
|
3月前
|
监控 算法 Java
Java虚拟机(JVM)使用多种垃圾回收算法来管理内存,以确保程序运行时不会因为内存不足而崩溃。
【6月更文挑战第20天】Java JVM运用多种GC算法,如标记-清除、复制、标记-压缩、分代收集、增量收集、并行收集和并发标记,以自动化内存管理,防止因内存耗尽导致的程序崩溃。这些算法各有优劣,适应不同的性能和资源需求。垃圾回收旨在避免手动内存管理,简化编程。当遇到内存泄漏,可以借助VisualVM、JConsole或MAT等工具监测内存、生成堆转储,分析引用链并定位泄漏源,从而解决问题。
44 4