`
85977328
  • 浏览: 1910078 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM内存分析系列(八)垃圾收集器介绍及性能指标

 
阅读更多
    内存回收的具体实现。
    停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户的体验;而高吞吐量则可以最高效率的利用CPU时间,尽快的完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。
    GC停顿时间缩短是以牺牲吞吐量和新生代空间来换取的:系统把新生代调小一些,收集100MB的新生代肯定比收集1000MB的新生代快,这也直接导致垃圾收集器发生的更频繁,原来10秒收集一次,每次停顿100毫秒,现在5秒收集一次,每次停顿70毫秒,停顿时间在下降,但吞吐量也下降了。

HotSopt JVM1.6中垃圾收集器的结构图
如果2个收集器之间存在连线,说明他们可以搭配使用。



Serial收集器
新生代收集器,“stop the word”,单线程收集器。适合client,而且对于收集几十M内存来说停顿极短,尤为高效使用。不存在多线程上下文切换的浪费。



ParNew收集器
新生代收集器,是Serial收集器的多线程版本的并行收集器。但也是“stop the word”。在server上多CPU环境的首选的新生代收集器。



Parallel Scavenge收集器
新生代收集器,并行的多线程收集器。该收集器目标是提高吞吐量。也叫吞吐量优先收集器。同时支持自适应策略。


Serial Old收集器
年老代收集器,是Serial收集器的年老代版本。使单线程和标记-整理算法。同理更适用于client的单CPU单线程的模式。



Parallel Old收集器
年老代收集器,是Parallel Scavenge收集器的年老代版本。使用多线程和标记-整理算法。主要是服务端模式下和Parallel Scavenge收集器组合使用。



CMS收集器(Current Mark Sweep)
年老代收集器,是一种以获取最短回收停顿时间为目标的收集器。尤其重视服务的响应速度。基于标记-清除算法实现。由于收集完成后会产生碎片,所以要开启 -XXUseCMSCompactAtFullCollection开关参数,用于在Full GC之后,进行一次碎片整理。内存整理的时候无法并发的。
他运作分为4个阶段
1 初始标记
2 并发标记
3 重新标记
4 并发清除

他的主要有点:并发收集、低停顿
缺点:
对CPU资源非常敏感
无法处理浮动垃圾
收集结束后会产生大量的空间碎片



G1收集器(Garbage First)
与CMS算法相比,有2个显著的改进。
1 基于标记-整理算法。
2 非常精确的控制停顿
G1将整个JAVA堆(包括新生代、老年代)划分为多个固定大小的独立区域,并跟踪垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,有限回收垃圾最多的区域。



附录
并行(Parallel):多线程垃圾收集器工作的时候,停止用户工作。
并发(Concurrent):用户线程和垃圾收集器同时工作。
  • 大小: 50.1 KB
  • 大小: 32 KB
  • 大小: 35.9 KB
  • 大小: 32.1 KB
  • 大小: 36.5 KB
  • 大小: 41.7 KB
分享到:
评论

相关推荐

    JVM内存管理白皮书

    它不仅向读者提供了JVM垃圾收集机制的理论知识,还提供了实操指导,比如如何选择和调优垃圾收集器以及使用哪些工具来评估垃圾收集器性能。对于开发人员来说,掌握这些知识可以帮助他们编写出性能更优、稳定性更高的...

    JVM内存空间分配笔记

    - 分析垃圾收集器的行为。 - 避免不必要的对象创建。 - 优化算法和数据结构。 #### 九、类的封装与继承 类的设计在Java开发中至关重要。良好的封装不仅可以提升代码的安全性,还可以提高代码的可维护性和可扩展...

    (三)MATJVM 内存分析工具.MAT JVM 内存分析工具

    2. ** dominator tree**:这是一个显示对象之间支配关系的图,通过它我们可以找到哪些对象持有大部分内存,并分析它们为何无法被垃圾收集器回收。 3. **Leak Suspects报告**:MAT会自动分析dump文件并生成一份报告...

    jvmgc日志分析工具

    为了有效地使用这类工具,你需要了解一些基本的JVM内存管理概念,如新生代、老年代、永久代(对于较旧的JVM)或元空间(对于Java 8及以上版本),以及不同的垃圾收集器,如Serial、Parallel、CMS、G1、ZGC和...

    java -jvm 内存分配和jvm调优

    Java JVM(Java虚拟机)内存分配与调优是Java...通过理解JVM内存模型,选择合适的垃圾收集器和设置合理的内存参数,可以有效提升Java应用的性能和稳定性。在实践中,不断学习和试验,才能找到最适合应用的内存配置。

    性能工程师指南:玩转OpenJDK HotSpot垃圾收集器

    ### 性能工程师指南:玩转OpenJDK HotSpot垃圾收集器 #### 一、性能工程概述 在软件开发过程中,性能工程是一个重要的环节,它不仅涵盖了对软件性能的需求定义与测试计划制定,还包括了软件的开发、实施及后续的...

    JVM高级特性之垃圾收集-黄泽忠.rar

    JVM提供了多种垃圾收集器,如Serial GC、Parallel GC、Parallel Old GC、CMS(Concurrent Mark Sweep)和G1(Garbage-First)GC。每种收集器都有其特点和适用场景。例如,Serial GC适用于轻量级或者单线程环境,而...

    JVM内存管理和垃圾回收知识.pdf

    本文主要探讨了JVM如何处理内存分配、垃圾检测与回收,以及各种策略和性能指标。 首先,垃圾回收是JVM的一项核心功能,它的目标是自动识别和释放不再使用的对象所占用的内存,以防止内存泄漏。垃圾检测主要有两种...

    JVM内存管理白皮书[借鉴].pdf

    而在Java中,内存管理是自动的,由JVM的垃圾收集器负责。这使得Java程序员无需关注内存泄露等问题,但同时也增加了对垃圾收集策略的理解和优化的需求。 2. 垃圾收集的概念: 垃圾收集是JVM自动回收不再使用的对象...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    这些参数包括初始堆大小(-Xms)、最大堆大小(-Xmx)、新生代大小(-Xmn)、垃圾收集器选择(如-XX:+UseG1GC)以及内存分配策略(-XX:NewRatio等)。根据应用特性调整这些参数可以避免内存溢出或性能瓶颈。 四、...

    JvmGC收集器

    在 Java 虚拟机中,GC(Garbage Collection)收集器是 JVM 的一个重要组件,它负责回收 Java 应用程序中的垃圾对象,从而维持应用程序的性能和可靠性。JvmGC 收集器是 JVM 中的三个主要 GC 收集器之一,分别是 ...

    理解JAVA虚拟机-内存管理、垃圾收集器.pptx

    在深入理解JVM内存管理和垃圾收集器之前,我们需要先了解JVM内存模型的基本结构。 内存模型主要包括以下几个部分: 1. **Java堆**:这是JVM管理的最大的内存区域,所有线程共享,主要用于存储类实例和数组。堆内存...

    JVM内存设置与调优指南

    总的来说,JVM内存设置与调优是一门深奥的学问,需要根据具体应用进行细致的分析和实验,以达到最佳的性能表现。理解内存结构、选择合适的垃圾收集器、合理设置参数,并结合监控工具进行调优,是优化Java应用性能的...

    性能工程师指南:玩转OpenJDK HotSpot垃圾收集器(83页).pdf

    《性能工程师指南:玩转OpenJDK HotSpot垃圾收集器》是一本专注于Java应用程序性能优化的专业书籍,尤其针对OpenJDK HotSpot虚拟机的垃圾收集器进行了深入探讨。该书共83页,旨在帮助性能工程师理解并优化Java应用的...

    JVM内存管理和垃圾回收参考.pdf

    Java虚拟机(JVM)内存管理和...总结来说,JVM内存管理和垃圾回收是一个复杂而精细的过程,涉及多种策略和算法,旨在高效利用内存,减少应用暂停时间,并防止内存泄漏。理解和掌握这些原理对优化Java应用性能至关重要。

    JVM下篇:性能监控与调优篇.7z

    - **G1(Garbage-First)GC**:新一代垃圾收集器,目标是达到可预测的暂停时间模型。 3. **性能监控工具**: - **JVisualVM**:集成了多种JVM监控功能,如内存、线程、类加载、CPU使用率等。 - **JConsole**:...

    JVM垃圾回收及监控优化1

    本篇文章主要探讨了JVM内存管理、垃圾收集器及其优化策略。 首先,Java的内存管理主要包括对象的分配与回收,主要发生在堆内存中。堆被划分为新生代和老年代,新生代又细分为Eden、From Survivor和To Survivor空间...

    Java虚拟机-jvm故障诊断与性能优化-源码

    - **垃圾收集器**:包括Serial、ParNew、Parallel Scavenge、CMS、G1等,各有不同的回收策略和目标。 - **分代收集**:不同年龄的对象在不同的区域,便于快速回收。 - **垃圾收集器组合**:如CMS+Parallel Old,...

    实战JAVA虚拟机 JVM故障诊断与性能优化.pdf

    - 垃圾回收:了解新生代、老年代、持久代的划分,以及如何通过不同的垃圾收集器进行垃圾回收,如Serial、ParNew、CMS、G1等。 - 内存泄漏:分析可能导致内存泄漏的原因,如无用对象引用、静态集合类的不当使用等,...

    JVM大厂面试题目集锦、垃圾回收、内存优化、内存结构全方位题目(附答案)

    JVM还提供了如CMS和G1等更复杂的垃圾收集器,CMS适用于响应时间敏感的应用,G1则试图平衡吞吐量和响应时间,两者都采用并发收集。 面试中常见的问题包括GC收集器的对比,如CMS收集器在内存不足时可能导致Full GC,...

Global site tag (gtag.js) - Google Analytics