JVM垃圾回收器详解:串行回收新生代内存管理垃圾回收的触发机制

简介: 在讨论新生代垃圾回收之前,首先要解决的问题就是:谁能触发垃圾回收?何时触发垃圾回收?从垃圾回收的角度来说,既可以进行主动回收,也可以进行被动回收。

垃圾回收的触发机制

在讨论新生代垃圾回收之前,首先要解决的问题就是:谁能触发垃圾回收?何时触发垃圾回收?

从垃圾回收的角度来说,既可以进行主动回收,也可以进行被动回收。

主动回收指的是GC工作线程发现内存不足时主动发起垃圾回收动作,被动回收指的是Mutator在对象分配的时候发现内存不足,由Mutator触发GC工作线程执行垃圾回收动作。主动进行回收需要额外的处理,判断何时启动垃圾回收,实现比较复杂;被动回收则非常简单。串行回收选择被动回收。

垃圾回收的执行可以由专门的GC工作线程来执行,也可以由Mutator来执行。通常来说,Mutator用于执行应用业务,如果把垃圾回收的工作放在Mutator中执行,会导致JVM设计的复杂性。使用专门的GC工作线程来执行垃圾回收工作的方法更为常见。GC工作线程执行垃圾回收时需要应用暂停(即STW),在JVM中最新的垃圾回收器实现或者增强中为了减少STW的时间,会把垃圾回收的一些任务放入Mutator中执行,也就是后面介绍的并发垃圾回收。

目前JVM中所有垃圾回收的触发机制有3种方式,即串行回收,并行回收和主动回收,如图3-9~图3-11所示。

网络异常,图片无法展示
|

图3-9 被动回收之串行回收

图3-9和图3-10演示的是被动回收。其中,图3-9中VMThread作为GC工作线程执行垃圾回收;图3-10中VMThread作为控制线程启动多个GC工作线程并行执行垃圾回收。图3-11演示的是主动回收。串行回收中Minor GC采用的是图3-9的触发机制方式,Parallel GC、ParNew、G1中Minor GC采用的是图3-10的触发机制方式,ZGC和Shenandoah采用的是图3-11的触发机制方式。

网络异常,图片无法展示
|

图3-10 被动回收之并行回收

网络异常,图片无法展示
|

图3-11 主动回收

在JVM的串行回收实现中,当Mutator发现无法为对象分配内存空间时,就会请求GC工作线程执行垃圾回收。JVM中被动执行垃圾回收的流程如下:

1)Mutator发现内存空间不足,触发垃圾回收请求。

2)VMThread控制线程接受请求,暂停所有的Mutator,以便响应垃圾回收执行请求。

3)VMThread作为GC工作线程执行垃圾回收动作。

4)VMThread发现垃圾回收动作执行后会唤醒暂停执行的Mutator,Mutator恢复执行。

本文给大家讲解的内容是JVM垃圾回收器详解:串行回收,新生代内存管理垃圾回收的触发机制

相关文章
|
2月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
71 0
|
2月前
|
算法 网络协议 Java
【JVM】——GC垃圾回收机制(图解通俗易懂)
GC垃圾回收,标识出垃圾(计数机制、可达性分析)内存释放机制(标记清除、复制算法、标记整理、分代回收)
|
2月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
2月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
3月前
|
机器学习/深度学习 监控 算法
Java虚拟机(JVM)的垃圾回收机制深度剖析####
本文深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法、性能调优策略及未来趋势。通过实例解析,为开发者提供优化Java应用性能的思路与方法。 ####
76 1
|
4月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
175 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
5月前
|
监控 算法 Java
深入理解Java中的垃圾回收机制在Java编程中,垃圾回收(Garbage Collection, GC)是一个核心概念,它自动管理内存,帮助开发者避免内存泄漏和溢出问题。本文将探讨Java中的垃圾回收机制,包括其基本原理、不同类型的垃圾收集器以及如何调优垃圾回收性能。通过深入浅出的方式,让读者对Java的垃圾回收有一个全面的认识。
本文详细介绍了Java中的垃圾回收机制,从基本原理到不同类型垃圾收集器的工作原理,再到实际调优策略。通过通俗易懂的语言和条理清晰的解释,帮助读者更好地理解和应用Java的垃圾回收技术,从而编写出更高效、稳定的Java应用程序。
|
4月前
|
存储 Java PHP
【JVM】垃圾回收机制(GC)之引用计数和可达性分析
【JVM】垃圾回收机制(GC)之引用计数和可达性分析
103 0
|
6月前
|
缓存 监控 Java
"Java垃圾回收太耗时?阿里HBase GC优化秘籍大公开,让你的应用性能飙升90%!"
【8月更文挑战第17天】阿里巴巴在HBase实践中成功将Java垃圾回收(GC)时间降低90%。通过选用G1垃圾回收器、精细调整JVM参数(如设置堆大小、目标停顿时间等)、优化代码减少内存分配(如使用对象池和缓存),并利用监控工具分析GC行为,有效缓解了高并发大数据场景下的性能瓶颈,极大提升了系统运行效率。
185 4
|
5月前
|
监控 算法 Java
深入理解Java中的垃圾回收机制(GC)
本文将探讨Java的自动内存管理核心——垃圾回收机制。通过详细解析标记-清除算法、复制算法和标记-整理算法等常用垃圾回收算法,以及CMS、G1等常见垃圾回收器,帮助读者更好地理解Java应用的性能优化和内存管理。同时,探讨分代收集、分区收集等策略在实际项目中的应用。结语部分总结了垃圾回收机制在Java开发中的重要性,并展望了未来可能的发展。
133 0