`
steven2011
  • 浏览: 31739 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何监控Java垃圾回收机制2

    博客分类:
  • Java
阅读更多

不同的jstat参数输出不同类型的列,如下表所示,根据你使用的”jstat option”会输出不同列的信息。

 
说明 Jstat参数
S0C 输出Survivor0空间的大小。单位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
S1C 输出Survivor1空间的大小。单位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
S0U 输出Survivor0已用空间的大小。单位KB。 -gc
-gcnew
S1U 输出Survivor1已用空间的大小。单位KB。 -gc
-gcnew
EC 输出Eden空间的大小。单位KB。 -gc
-gccapacity
-gcnew
-gcnewcapacity
EU 输出Eden已用空间的大小。单位KB。 -gc
-gcnew
OC 输出老年代空间的大小。单位KB。 -gc
-gccapacity
-gcold
-gcoldcapacity
OU 输出老年代已用空间的大小。单位KB。 -gc
-gcold
PC 输出持久代空间的大小。单位KB。 -gc
-gccapacity
-gcold
-gcoldcapacity
-gcpermcapacity
PU 输出持久代已用空间的大小。单位KB。 -gc
-gcold
YGC 新生代空间GC时间发生的次数。 -gc
-gccapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
YGCT 新生代GC处理花费的时间。 -gc
-gcnew
-gcutil
-gccause
FGC full GC发生的次数。 -gc
-gccapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
FGCT full GC操作花费的时间 -gc
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
GCT GC操作花费的总时间。 -gc
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-gccause
NGCMN 新生代最小空间容量,单位KB。 -gccapacity
-gcnewcapacity
NGCMX 新生代最大空间容量,单位KB。 -gccapacity
-gcnewcapacity
NGC 新生代当前空间容量,单位KB。 -gccapacity
-gcnewcapacity
OGCMN 老年代最小空间容量,单位KB。 -gccapacity
-gcoldcapacity
OGCMX 老年代最大空间容量,单位KB。 -gccapacity
-gcoldcapacity
OGC 老年代当前空间容量制,单位KB。 -gccapacity
-gcoldcapacity
PGCMN 持久代最小空间容量,单位KB。 -gccapacity
-gcpermcapacity
PGCMX 持久代最大空间容量,单位KB。 -gccapacity
-gcpermcapacity
PGC 持久代当前空间容量,单位KB。 -gccapacity
-gcpermcapacity
PC 持久代当前空间大小,单位KB -gccapacity
-gcpermcapacity
PU 持久代当前已用空间大小,单位KB -gc
-gcold
LGCC 最后一次GC发生的原因 -gccause
GCC 当前GC发生的原因 -gccause
TT 老年化阈值。被移动到老年代之前,在新生代空存活的次数。 -gcnew
MTT 最大老年化阈值。被移动到老年代之前,在新生代空存活的次数。 -gcnew
DSS 幸存者区所需空间大小,单位KB。 -gcnew

jstat 的好处是它可以持续的监控GC操作数据,不论Java应用是运行在本地还是远程,只要有控制台的地方就可以使用。当使用–gcutil 会输出如下信息。在GC优化的时候,你需要特别注意YGC, YGCT, FGC, FGCT 和GCT。

1
2
3
4
S0      S1       E        O        P        YGC    YGCT     FGC    FGCT     GCT
0.00    66.44    54.12    10.58    86.63    217    0.928     2     0.067    0.995
0.00    66.44    54.12    10.58    86.63    217    0.928     2     0.067    0.995
0.00    66.44    54.12    10.58    86.63    217    0.928     2     0.067    0.995

这些信息很重要,因为它们展示了GC处理到底花费了多少时间。
在这个例子中,YGC 是217而YGCT 是0.928,这样在简单的计算数据平均数后,你可以知道每次新生代的GC大概需要4ms(0.004秒),而full GC的平均时间为33ms。
但是,只看数据平均数经常无法分析出真正的GC问题。这是主要是因为GC操作时间严重的偏差(换句话说,假如两次full GC的时间是 67ms,那么其中的一次full GC可能执行了10ms而另一个可能执行了57ms。)为了更好地检测每次GC处理时间,最好使用 –verbosegc来替代数据平均数。

-verbosegc

-verbosegc 是在启动一个Java应用时可以指定的JVM参数之一。而jstat 可以监控任何JVM应用,即便它没有制定任何参数。 -verbosegc 需要在启动的时候指定,因此你可能会认为它没有必要(因为jstat可以替代之)。但是, -verbosegc 会以更浅显易懂的方式展现GC发生的结果,因此他对于监控监控GC信息十分有用。

 

 
  jstat -verbosegc
监控对象 运行在本机的Java应用可以把日志输出到终端上,或者借助jstatd命令通过网络连接远程的Java应用。 只有那些把-verbogc作为启动参数的JVM。
输出信息 堆状态(已用空间,最大限制,GC执行次数/时间,等等) 执行GC前后新生代和老年代空间大小,GC执行时间。
输出时间 Every designated time
每次设定好的时间。
每次GC发生的时候。
何时有用。 当你试图观察堆空间变化情况 当你试图了解单次GC产生的效果。

下面是-verbosegc 的可用参数
· -XX:+PrintGCDetails
· -XX:+PrintGCTimeStamps
· -XX:+PrintHeapAtGC
· -XX:+PrintGCDateStamps (from JDK 6 update 4)

如果只是用了 -verbosegc 。那么默认会加上 -XX:+PrintGCDetails。 –verbosgc 的附加参数并不是独立的。而是经常组合起来使用。
使用 –verbosegc后,每次GC发生你都会看到如下格式的结果。

[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting occupancy3> -> <ending occupancy3>, <pause time3> secs]

收集器 minor gc使用的收集器的名字。
starting occupancy1 GC执行前新生代空间大小。
ending occupancy1 GC执行后新生代空间大小。
pause time1 因为执行minor GC,Java应用暂停的时间。
starting occupancy3 GC执行前堆区域总大小
ending occupancy3 GC执行后堆区域总大小
pause time3 Java应用由于执行堆空间GC(包括major GC)而停止的时间。

这是-verbosegc 输出的minor GC的例子。

1
2
3
4
S0    S1     E      O      P        YGC    YGCT    FGC    FGCT     GCT
0.00  66.44  54.12  10.58  86.63    217    0.928     2    0.067    0.995
0.00  66.44  54.12  10.58  86.63    217    0.928     2    0.067    0.995
0.00  66.44  54.12  10.58  86.63    217    0.928     2    0.067    0.995
分享到:
评论

相关推荐

    Java垃圾回收机制

    Java垃圾回收机制是Java编程语言的关键特性之一,它自动化地管理程序运行时的内存,确保程序不会因内存泄漏而崩溃。垃圾回收(GC)的主要目标是识别并清理不再被程序中任何活动对象引用的对象,从而释放内存资源。...

    java垃圾回收机制归类.pdf

    Java垃圾回收机制是Java编程中的核心概念,它自动管理程序中的内存分配与释放,从而避免了程序员手动管理内存可能导致的内存泄漏等问题。垃圾回收的主要任务是识别并清理不再被程序引用的对象,释放其所占用的内存...

    Java垃圾回收机制扫描.pdf

    Java垃圾回收机制是Java语言的一大特性,它负责自动管理程序中的内存,避免了程序员手动进行内存释放,从而降低了出现内存泄漏等问题的风险。垃圾回收的主要任务是识别并清理那些不再被程序引用的对象,以便回收它们...

    java垃圾回收器代码举例

    总之,理解并掌握Java垃圾回收机制对于编写高效、稳定的Java程序至关重要。通过实践和调整,我们可以有效地利用内存资源,提高应用的运行效率。在实际项目中,选择合适的垃圾回收器和调优策略是提升系统性能的关键。

    java垃圾回收机制借鉴.pdf

    Java垃圾回收机制是Java语言中的一个重要特性,它自动管理程序中的内存,避免程序员手动处理内存释放,从而减少了内存泄露和程序崩溃的风险。垃圾回收的主要目标是识别并清理不再被程序引用的对象,以便回收其占用的...

    Java垃圾回收机制详解和调优

    Java垃圾回收机制是Java虚拟机(JVM)中至关重要的组成部分,它的主要任务是自动管理内存,回收不再使用的对象以避免内存泄漏。垃圾回收机制在Java中自动化了内存管理,使得程序员无需手动管理内存,降低了编程复杂...

    细述 Java垃圾回收机制→Java Garbage Collection Monitoring and Analysis1

    Java垃圾回收机制是Java编程语言中的一项核心特性,它负责自动管理程序中的内存分配和释放,以避免内存泄漏和资源浪费。在Java中,程序员无需手动进行内存管理,因为垃圾回收器会识别并清理不再使用的对象,从而释放...

    Java 垃圾回收机制详解及实例代码.docx

    Java垃圾回收机制是Java编程语言中的一个重要特性,它负责自动管理程序中的内存,避免程序员手动进行繁琐且容易出错的内存释放操作。垃圾回收的主要目标是识别并清理那些不再被程序使用的对象,以释放内存资源。以下...

    关于javal垃圾回收机制的一些文档

    在"java垃圾回收机制介绍.doc"文档中,可能还会深入讨论如何监控和调试垃圾回收,包括使用JConsole、VisualVM等工具,以及分析GC日志,以理解垃圾回收的性能和行为,从而优化应用程序的内存使用。 了解和掌握Java...

    Java垃圾回收与回收机制.doc

    Java垃圾回收机制是Java虚拟机(JVM)内存管理的关键组成部分,主要负责自动释放不再使用的对象,从而避免内存泄漏并优化内存使用。垃圾回收在Java中自动进行,程序员无需手动管理内存,这使得开发更加简便,同时...

    成为JavaGC专家PartII-如何监控Java垃圾回收

    总之,监控Java垃圾回收是一个复杂但必要的过程,需要综合运用各种工具、技术和实践经验。通过深入理解GC的工作原理,调整合适的GC策略,以及优化代码,开发者可以提升应用的性能和稳定性,成为一名真正的Java GC...

    java垃圾回收

    Java垃圾回收(Garbage Collection, 简称GC)是Java虚拟机(JVM)管理内存的一种机制,它自动地识别并清理不再使用的对象,从而避免了程序员手动管理内存可能导致的内存泄漏问题。垃圾回收是Java语言的一个重要特性...

    Java垃圾回收知识,垃圾回收资料

    理解并掌握Java垃圾回收机制,不仅有助于解决内存溢出、性能瓶颈等问题,还能在面试中展现对Java内存管理的深入理解。对于开发者来说,熟练运用各种GC算法和收集器,以及掌握调优技巧,是提升代码质量和系统性能的...

    JVM垃圾回收机制与GC性能调优

    Java虚拟机(JVM)的垃圾回收(GC)机制是Java程序高效运行的关键部分,它自动管理内存,释放不再使用的对象以避免内存泄漏。本文主要探讨JVM堆内存的结构和GC的工作原理,以及如何进行性能调优。 JVM堆是Java应用...

    垃圾回收机制文件打包

    在Java编程语言中,垃圾回收(Garbage Collection, GC)是...本压缩包中的文件可能涵盖了这些主题的详细讲解,包括理论知识、实践案例和性能调优技巧,对于希望深入理解Java垃圾回收机制的开发者来说是一份宝贵的资料。

    Java中内存泄露及垃圾回收机制宣贯.pdf

    Java的垃圾回收机制是由虚拟机(JVM)的一部分——垃圾回收器(Garbage Collector)来执行的。与C++等语言不同,Java程序员不需要显式地释放内存,这大大减少了内存泄漏的可能性。 垃圾回收器通过一系列算法来判断...

    Java 垃圾回收小结(一)

    本文将对Java垃圾回收进行小结,探讨其基本原理、类型以及常见算法。 1. 基本原理: Java中的内存分为堆(Heap)和栈(Stack)两部分,垃圾回收主要关注堆内存。当一个对象不再被任何引用指向时,它被视为可回收的...

    JAVA垃圾回收个人总结

    ### JAVA垃圾回收个人总结 #### 一、垃圾回收(GC)概述 垃圾回收(Garbage Collection,简称GC)是Java虚拟机(JVM)提供的一种自动内存管理机制,它负责自动回收不再使用的对象所占用的内存空间,从而避免了手动管理...

Global site tag (gtag.js) - Google Analytics