在上一篇文章中,我们通过代码运行结果,查看到JVM的堆内存逻辑上分区是三部分,物理上分区是2部分,以及是新生代分区三部分,占比分布是8/1/1。而且我们还通过代码和堆JVM参数配置,制造出了OOM异常。下面我们就来分析GC回收器的日志信息。
先来看看,OOM后,GC详细日志信息:
新生区的伊甸园区GC日志分析
新生区的Eden区的GC,叫法:GC或者是YGC或者是MinorGC或者是轻GC
我们复制一条来分析:
[GC (Allocation Failure①) [PSYoungGen: 1877K②->472K③(2048K④)] 3697⑤K->2835K⑥(7680K⑦), 0.0010223⑧ secs] [Times: user=0.00⑨ sys=0.00⑩, real=0.00 secs]
分段说明:
-
:GC的类型;
-
:YongGC前新生代的内存占用量
-
:YoungGC后新生代的内存占用量;
-
:新生代总内存大小;
-
:YoungGC前JVM堆内存占用量;
-
:YoungGc后JVM堆内存使用量;
-
:JVM堆内存总大小;
-
:YoungGC耗时
-
:YoungGC用户耗时;
-
:YoungGC系统耗时
-
:YoungGC实际耗时
年老代GC日志分析:
年老代GC的叫法:Full GC或者FGC或者MajorGC或者重GC
同样,我们拿出OOM之前的一条GC日志进行分析
[Full GC (Ergonomics①) [PSYoungGen②: 96K③->0K④ (2048K⑤)] [ParOldGen⑥: 5094K⑦->4007K⑧ (5632K⑨)] 5190K⑩->4007K十一 (7680K十二), [Metaspace十三: 3314K十四 ->3314K 十五(1056768K十六)], 0.0074234 secs十七] [Times: user=0.08十八 sys=0.01十九, real=0.01 secs二十]:
标志说明:
-
:GC类型
-
:Young区
-
:GC前Young区内存占用
-
:GC后Young区内存占用
-
:Young区总大小
-
:Old区
-
:GC前Old区内存占用
-
:GC后Old区内存占用
-
:Old区总大小
-
:GC前堆内存占用
-
:GC后堆内存占用
-
:JVM堆内存总大小
-
:元空间区
-
:GC前占用内存
-
:GC后占用内存
-
:元空间总大小
-
:GC耗时
-
:用户耗时
-
:系统耗时
-
:实际耗时
如下图:
接下来,我们继续学习的是JVM垃圾回收的四种算法了。欢迎大家和凯哥(凯哥Java:kaigejava)继续一起学习:引用计数算法、复制算法、标记清除、标记压缩这四种算法。
相关推荐
JVM调优是提高Java应用程序性能的关键步骤,涉及到多个方面,包括堆内存设置、垃圾收集器选择、类加载机制、线程管理等。以下是对这些关键知识点的详细阐述: 1. **堆内存配置** - **新生代与老年代**:JVM堆内存...
本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM的各种运行时信息,包括但不限于JVM进程与参数查看、垃圾收集信息、JVM锁信息等内容。 #### 二、查看JVM进程及参数 ##### 1. JPS - **用途**:列出主机上...
- `-XX:+PrintGC`:打印GC日志信息。 - `-XX:+AggressiveOpts`:启用更激进的优化策略。 - `-XX:+UseBiasedLocking`:启用偏向锁。 #### 四、JVM的垃圾回收集器 不同的垃圾回收集器针对不同的应用场景进行了优化:...
### JVM学习笔记 #### JVM内存模型 (JMM) JVM内存模型主要分为以下几个部分: - **Java堆**:这是所有线程共享的一块区域,在虚拟机启动时创建。主要用于存放对象实例,几乎所有的对象实例都在这里分配内存。 - *...
《JVM笔记(阳哥)》是一份深入探讨Java虚拟机(JVM)的资料,由阳哥精心整理。这份笔记涵盖了JVM的基础概念、内存管理、类加载机制、性能优化等多个方面,对于理解Java程序的运行机制以及提升开发效率具有重要的...
1. 参数调整:通过设置JVM启动参数,如-Xms、-Xmx控制堆大小,-XX:+UseG1GC选择垃圾收集器,-XX:MaxHeapFreeRatio、-XX:MinHeapFreeRatio设定内存利用率等。 2. 内存调优:根据应用特点调整新生代、老年代的比例,...
【狂神说JVM探究】是一份集合了多种格式的学习资料,主要涵盖了Java虚拟机(JVM)的基础知识。这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键...
**JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM:...
新生代和旧生代采用不同的垃圾收集算法,例如Minor GC和Major GC,以确保高效且无内存泄漏的运行环境。通过调整JVM参数如-Xmx、-Xms、-Xmn等,可以定制堆的大小和新生代与Survivor的比例,以适应不同应用的需求。 ...
- **跟踪收集器**:从GC Roots开始遍历对象,如果对象无法从GC Roots到达,视为可回收。常见的跟踪收集器有串行收集器、并行收集器和并发收集器。 3. **类加载机制** - 类加载过程包括加载、验证、准备、解析和...
JVM的性能调优主要包括内存管理和垃圾收集(GC)优化。内存优化涉及合理设置堆大小、新生代和老年代的比例,避免内存溢出。GC优化则关注垃圾收集的效率,通过调整GC算法、设置GC参数来减少停顿时间和提高系统响应...
本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...
为了优化垃圾收集,可以设置-XX:+UseParallelGC、-XX:+UseG1GC或-XX:+UseConcMarkSweepGC等不同收集器。此外,还可以通过-XX:MaxTenuringThreshold设定对象晋升到老年代的阈值。 【总结】 理解JVM的结构和工作原理...
2. **选择合适的垃圾收集器**:不同的GC算法适用于不同的应用场景,选择能平衡吞吐量和响应时间的收集器。 3. **监控和诊断**:使用JMX(Java Management Extensions)或专门的工具如VisualVM,对JVM的内存使用和...
本文将围绕JVM的核心知识点进行深入探讨,主要包括类文件加载机制、运行时数据、JVM内存模型、GC算法以及垃圾收集器分类等内容。 #### 二、基础知识梳理 ##### 1. Java与JVM简介 - **Java**: 是一门面向对象的...
本学习笔记旨在全面解析JVM的工作原理,涵盖内存管理、类加载机制、垃圾收集、性能调优等多个关键领域,帮助读者从基础到深入地掌握JVM。 1. **JVM结构与运行过程** - JVM由类装载器、运行时数据区、执行引擎、...
这份“JVM的学习笔记PDF版”应该包含了关于JVM的详细信息,帮助学习者深入理解这个复杂的系统。JVM允许Java代码跨平台运行,通过解释器、类加载器、垃圾收集器等组件实现“一次编写,到处运行”的理念。 1. **JVM...
不同的垃圾收集器有不同的工作策略,如新生代GC、老年代GC,以及分代收集等。理解GC的工作原理,能帮助我们调整参数以提高应用的响应速度和内存利用率。 JVM的字节码执行引擎(也称为解释器)是Java代码运行的基础...