本文是成为Java GC专家系列文章的第二篇。在第一篇《深入浅出Java垃圾接纳机制》中我们进修了差异GC算法的执行进程,GC是怎样事变的,什么是新生代和晚年月,你应该相识的JDK7中的5种GC范例,以及这5种范例对付应用机能的影响。 在本文中,我将表明JVM到底是怎样执行垃圾接纳处理赏罚的。 什么是GC监控? 垃圾接纳网络监控指的是搞清晰JVM怎样执行GC的进程,譬喻,我们可以查明: 1. 何时一个新生代中的工具被移动到晚年月时,所耗费的时刻。 2. Stop-the-world 何时产生的,一连了多长时刻。 GC监控是为了辨别JVM是否在高效地执行GC,以及是否有须要举办特另外机能调优。基于以上信息,我们可以修改应用措施可能调解GC算法(GC优化)。 怎样监控GC 有许多种要领可以监控GC,但其不同仅仅是GC操纵通过何种方法揭示罢了。GC操纵是由JVM来完成,而GC监控器材只是将JVM提供的GC信息揭示给你,因此,岂论你行使何种方法监控GC都将获得沟通的功效。以是你也就不必去进修全部的监控GC的要领。可是由于进修每种监控要领不会占用太多时刻,相识多一点可以辅佐你按照差异的场景选择最为吻合的方法。 下面所列的器材以及JVM参数并不合用于全部的HVM供给商。这是由于并没有关于GC信息的逼迫尺度。本文我们将行使HotSpot JVM (Oracle JVM)。由于NHN 一向在行使Oracle (Sun) JVM,以是用它作为示例来表明我们提到的器材和JVM参数更轻易些。 jstat jstat 是HotSpot JVM提供的一个监控器材。其他监控器材尚有jps 和jstatd。有些时辰,你也许必要同时行使三种器材来监控你的应用。jstat 不只提供GC操纵的信息,还提供类装载操纵的信息以及运行时编译器操纵的信息。本文将只涉及jstat可以或许提供的信息中与监控GC操纵信息相干的成果。 在上图的例子中,现实的数据会凭证如下列输出: S0C S1C S0U S1U EC EU OC OU PCvmid (假造机 ID),正如其名字描写的,它是假造机的ID,Java应用岂论运行在当地照旧长途的呆板城市拥有本身独立的vmid。运行在当地呆板上的vmid称之为lvmid (当地vmid),凡是是PID。假如想获得PID的值你可以行使ps呼吁可能windows使命打点器,但我们保举行使jps来获取,由于PID和lvmid偶然会纷歧致。jps 通过Java PS实现,jps呼吁会返回vmids和main要领的信息,正如ps呼吁揭示PIDS和历程名字那样。
参数名称 描写
gc 输出每个堆地区的当前可用空间以及已用空间(伊甸园,幸存者等等),GC执行的总次数,GC操纵累计所耗费的时刻。
gccapactiy 输出每个堆地区的最小空间限定(ms)/最大空间限定(mx),当前巨细,每个地区之上执行GC的次数。(不输出当前已用空间以及GC执行时刻)。
gccause 输出-gcutil提供的信息以及最后一次执行GC的产生缘故起因和当前所执行的GC的产生缘故起因
gcnew 输出新生代空间的GC机能数据
gcnewcapacity 输出新生代空间的巨细的统计数据。
gcold 输出晚年月空间的GC机能数据。
gcoldcapacity 输出晚年月空间的巨细的统计数据。
gcpermcapacity 输出耐久带空间的巨细的统计数据。
gcutil 输出每个堆地区行使占比,以及GC执行的总次数和GC操纵所耗费的变乱。 你可以只体谅那些最常用的呼吁,你会常常用到 -gcutil (或-gccause), -gc and –gccapacity。 · -gcutil 被用于搜查堆间的行使环境,GC执行的次数以及GC操纵所耗费的时刻。 · -gccapacity以及其他的参数可以用于搜查现实分派内存的巨细。 行使-gc 参数你可以看到如下输出: S0C S1C … GCT 1248.0 896.0 … 1.246 1248.0 896.0 … 1.246 … … … …差异的jstat参数输出差异范例的列,如下表所示,按照你行使的”jstat option”会输出差异列的信息。
列 声名 Jstat参数
S0C
输出Survivor0空间的巨细。单元KB。
-gc
S1C
输出Survivor1空间的巨细。单元KB。
-gc
S0U
输出Survivor0已用空间的巨细。单元KB。
-gc
S1U
输出Survivor1已用空间的巨细。单元KB。
-gc
EC
输出Eden空间的巨细。单元KB。
-gc
EU
输出Eden已用空间的巨细。单元KB。
-gc
OC
输出晚年月空间的巨细。单元KB。
-gc
OU
输出晚年月已用空间的巨细。单元KB。
-gc
PC
输出耐久代空间的巨细。单元KB。
-gc
PU
输出耐久代已用空间的巨细。单元KB。
-gc
YGC
新生代空间GC时刻产生的次数。
-gc
YGCT
新生代GC处理赏罚耗费的时刻。
-gc
FGC
full GC产生的次数。
-gc
FGCT
full GC操纵耗费的时刻
-gc
GCT
GC操纵耗费的总时刻。
-gc
NGCMN
新生代最小空间容量,单元KB。
-gccapacity
NGCMX
新生代最大空间容量,单元KB。
-gccapacity
NGC
新生代当前空间容量,单元KB。
-gccapacity
OGCMN
晚年月最小空间容量,单元KB。
-gccapacity
OGCMX
晚年月最大空间容量,单元KB。
-gccapacity
OGC
晚年月当前空间容量制,单元KB。
-gccapacity
PGCMN
耐久代最小空间容量,单元KB。
-gccapacity
PGCMX
耐久代最大空间容量,单元KB。
-gccapacity
PGC
耐久代当前空间容量,单元KB。
-gccapacity
PC
耐久代当前空间巨细,单元KB
-gccapacity
PU
耐久代当前已用空间巨细,单元KB
-gc LGCC 最后一次GC产生的缘故起因 -gccause GCC 当前GC产生的缘故起因 -gccause TT 晚年化阈值。被移动到晚年月之前,在新生代空存活的次数。 -gcnew MTT 最大晚年化阈值。被移动到晚年月之前,在新生代空存活的次数。 -gcnew DSS 幸存者区所需空间巨细,单元KB。 -gcnew (责任编辑:admin) |