`
买切糕的猴子
  • 浏览: 23496 次
社区版块
存档分类
最新评论

java虚拟机-GC日志

    博客分类:
  • java
阅读更多
在分析java内存问题的时候需要查看GC日志,这里概要的总结一下GC日志该如何看
通过设置-XX:+PrintGCDetails虚拟机参数就可以得到GC日志,下面是一段GC日志示例,笔者使用的是JDK8,HotSpot虚拟机
 
publicclass T {
publicstaticvoid main(String[] args) {
T
t = new T();
 
System.gc();
}
}
 
 
[GC (System.gc()) [PSYoungGen: 2662K->576K(38400K)] 2662K->584K(125952K), 0.0015403 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[Full GC (System.gc()) [PSYoungGen: 576K->0K(38400K)] [ParOldGen: 8K->482K(87552K)] 584K->482K(125952K), [Metaspace: 2778K->2778K(1056768K)], 0.0056851 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
Heap
 PSYoungGen      total 38400K, used 333K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
  eden space 33280K, 1% used [0x0000000795580000,0x00000007955d34a8,0x0000000797600000)
  from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
  to   space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
 ParOldGen       total 87552K, used 482K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
  object space 87552K, 0% used [0x0000000740000000,0x00000007400788f8,0x0000000745580000)
 Metaspace       used 2785K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 301K, capacity 386K, committed 512K, reserved 1048576K
 
 
[GC (System.gc())  [Full GC (System.gc())表示这次垃圾收集的类型和由谁引发的。
 
[PSYoungGen: 576K->0K(38400K)]表示使用的是Parallel Scavenge收集器对新生代进行回收,GC前内存使用量为576K->GC后的内存使用量为0K(新生代内存总量为38400K)
 
[ParOldGen: 8K->482K(87552K)]表示使用Parallel Scavenge收集器对老年代进行收集,GC前内存使用量为8K->GC后的内存使用量为482K(老年代内存总量为87552K)  说明这次GC后将新生代中的一些对象移到了老年代,并没有直接干掉
 
[Metaspace: 2778K->2778K(1056768K)] 从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关。
 
[Times: user=0.01 sys=0.00, real=0.01 secs] user表示用户态消耗的CPU时间,sys表示内核态消耗的CPU时间,real表示操作从开始到结束所经过的墙钟时间,墙钟时间包括各种非运算所消耗的时间,包括磁盘IO等待时间,线程阻塞等待时间等。而CPU时间不包括这些。
 
Heap
 PSYoungGen      total 38400K, used 333K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
  eden space 33280K, 1% used [0x0000000795580000,0x00000007955d34a8,0x0000000797600000)
  from space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
  to   space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
 ParOldGen       total 87552K, used 482K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
  object space 87552K, 0% used [0x0000000740000000,0x00000007400788f8,0x0000000745580000)
 Metaspace       used 2785K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 301K, capacity 386K, committed 512K, reserved 1048576K
 
这段是堆内存的具体信息,从新生代到老年代,再到方法区的Metaspace,都有详细的描述。其中eden表示新生代中的Eden区,from表示Survivor里的from surviver区,to 表示Survivor里的to Survivor区。新生代中采用复制清理的算法,大概的原理就是把这快内存分为两块,一块用于使用,另一块空着,当要回收的时候就把还活着的对象复制到空闲区,然后对使用区进行全部回收。通常90%对象都是朝生夕死的,所以基本按照9:1的比例划分使用区和空闲区。
其中Eden和from survivor就是在使用区,to survivor就是在空闲区。

 

 
0
0
分享到:
评论

相关推荐

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

    Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为开发者提供了跨平台的运行环境。在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过...

    深入理解Java虚拟机---学习感悟以及笔记

    本文来自于cnblogs,为什么要学习Java虚拟机?它能干什么,文章从作者得角度带大家深入Java虚拟机相关内容,希望对大家有帮助。...Root,或者查看GC日志,去查找这个问题的根源,这样就能处理这些问题。还有以前的

    Java虚拟机GC日志分析

    Java虚拟机GC日志分析 Java虚拟机GC日志分析是Java开发者不可或缺的一项技能,通过对GC日志的分析,可以了解Java虚拟机中的内存使用情况,避免内存溢出和性能问题。本文将对Java虚拟机GC日志分析进行详细的介绍,并...

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

    《实战Java虚拟机——JVM故障诊断与性能优化》是一本深入探讨Java开发人员和运维人员必备技能的书籍。本书作者葛一鸣以其丰富的实战经验,详细阐述了JVM(Java Virtual Machine)的工作原理,以及如何有效地进行故障...

    深入java虚拟机光盘源码-jvm-gc-logs-analyzer:jvm-gc-logs-analyzer

    深入java虚拟机光盘资源jvm-gc-logs-analyzer 这个项目是一个 Java 虚拟机和垃圾收集器日志分析器。 它专用于 JVM 11 及更高版本(JVM 8 支持正在开发中)。 日志必须采用适当的格式和适当的装饰器,检查最后部分的...

    Java 7 - GC cheatsheet

    Java 7 GC(垃圾回收)参数配置是Java虚拟机(JVM)调优的关键组成部分,它决定了垃圾回收的行为和性能表现。本文将详细介绍Java 7中常见的垃圾回收器和相应的JVM参数,帮助读者更好地理解和使用这些参数进行性能...

    java 虚拟机参数配置说明及Myeclipse内存不足

    - `-XX:+PrintGC`, `-XX:+PrintGCDetails`: 输出GC日志,帮助分析内存使用情况。 - `-XX:+HeapDumpOnOutOfMemoryError`: 当出现内存溢出时,生成堆转储文件,便于分析问题原因。 在MyEclipse这样的集成开发环境中...

    jvm-full-gc调优-jvm-full-gc.zip

    在Java开发中,JVM(Java虚拟机)的性能优化是一项关键任务,特别是对于大型系统而言,频繁的Full GC(垃圾收集)会导致应用暂停时间过长,影响用户体验。本资料"jvm-full-gc调优-jvm-full-gc.zip"显然是针对如何...

    深入理解Java虚拟机JVM高级特性与最佳实践1

    书中强调将理论知识转化为实践技能,提供了分析GC日志、JIT编译优化过程的方法,并增加了一系列处理JVM问题的实际案例。这有助于读者在遇到性能瓶颈或故障时,能够迅速定位问题并采取相应的解决措施。 总的来说,这...

    jvm调优,java 虚拟机优化

    Java虚拟机(JVM)调优是提升Java应用程序性能的关键环节,主要涉及到内存管理、垃圾收集(GC)、线程调度等多个方面。JVM调优的目标是优化程序运行效率,减少不必要的系统资源消耗,特别是减少全GC(Full GC)的...

    Java虚拟机学习资料

    Java虚拟机(JVM)是Java程序运行的核心,它为Java提供了一个跨平台的执行环境。深入理解JVM对于任何Java开发者来说都是至关重要的,因为它直接影响到程序的性能、稳定性和内存管理。以下是对"深入理解Java虚拟机...

    深入JAVA虚拟机完整教程

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。深入理解JVM对于优化代码性能、解决内存问题以及提升开发效率至关重要。本教程将全面讲解JVM的工作原理、内存管理、类加载机制以及...

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

    《实战JAVA虚拟机 JVM故障诊断与性能优化》这本书深入探讨了Java开发中不可或缺的Java虚拟机(JVM)技术,对于Java开发者来说,理解JVM的工作原理、故障诊断以及性能调优是至关重要的。以下将围绕这些主题展开详细的...

    深入理解Java虚拟机笔记(带目录).docx

    深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识点: 虚拟机内存结构 Java 虚拟机的内存结构主要包括以下几个部分: * 方法...

    apache-skywalking-java-agent-8.9.0

    2. **JVM监控**:Java虚拟机(JVM)是Java应用程序的运行环境。SkyWalking Java Agent能够监控JVM的内存使用情况、线程状态、垃圾回收(GC)行为,以及CPU负载等关键指标,帮助开发者识别潜在的性能问题。 3. **...

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

    《JAVA虚拟机故障诊断与性能优化》是一本深入探讨Java虚拟机(JVM)核心概念和技术的实战指南。这本书涵盖了JVM的内部架构、运行机制、参数调整、垃圾收集算法以及性能优化和故障排查等多个重要方面,对于Java开发者...

    深入JAVA虚拟机(随书源代码)

    通过分析和调整JVM的各种设置,包括线程池大小、GC日志配置、类加载策略等,可以改善系统响应时间、减少内存消耗、避免Full GC等问题,从而提高整体应用性能。 《深入JAVA虚拟机》这本书的随书源代码可能包含了各种...

    30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)

    使用`-XX:+PrintGC`打印GC日志以便于分析问题等。 4. **减少对象创建**: 对象创建是导致年轻代频繁GC的主要原因之一。可以通过缓存对象、复用对象等方式降低对象创建频率。 5. **避免内存泄漏**: 定期检查代码中...

Global site tag (gtag.js) - Google Analytics