jvm运行时保留相关信息总结

 

jdk1.8

1、gc日志

用法1

-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/opt/tomcat/plsgc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=9 -XX:GCLogFileSize=20M

常见用法

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/tomcat/gc.log

 

参数解释:

-verbose:gc

显示有关每个垃圾收集(GC)事件的信息。

Displays information about each garbage collection (GC) event.

-XX:+PrintHeapAtGC

   在gc的时候打印heap中的信息。jre1.9及以上有描述,1.8暂无描述,实验可用

 -XX:+PrintGCDateStamps

       启用在每个GC上打印日期戳。默认情况下,此选项处于禁用状态。

Enables printing of a date stamp at every GC. By default, this option is disabled.

-XX:+PrintGCTimeStamps

启用在每个GC上打印时间戳。默认情况下,此选项处于禁用状态。

Enables printing of time stamps at every GC. By default, this option is disabled.

-XX:+PrintGCDetails

允许在每个GC上打印详细消息。默认情况下,此选项处于禁用状态。

Enables printing of detailed messages at every GC. By default, this option is disabled.

-XX:+PrintTenuringDistribution

启用年龄信息的打印。以下是输出的示例:

Desired survivor size 48286924 bytes, new threshold 10 (max 10)

- age 1: 28992024 bytes, 28992024 total

- age 2: 1366864 bytes, 30358888 total

- age 3: 1425912 bytes, 31784800 total

...

年龄1的是最年轻的幸存者(它们是在上一次轻量之后创建的,在最近一次轻量之后幸存下来,并从eden移动到幸存者(s0,s1)空间)。

年龄2的物体存活了两次轻量gc(在第二次gc期间,它们被从一个幸存者空间复制到下一个幸存者空间)。等等。

在上一个例子中,28 992 024字节在一次清除后存活,并从eden复制到幸存者空间,1366864字节被年龄2的对象等占用。每行中的第三个值是年龄n或更小的对象的累积大小。

默认情况下,此选项处于禁用状态。

-XX:+PrintGCApplicationStoppedTime

允许打印暂停(例如GC暂停)持续的时间。默认情况下,此选项处于禁用状态

Enables printing of how much time the pause (for example, a GC pause) lasted. By default, this option is disabled.

-XX:+UseGCLogFileRotation

为PrintTenuringDistribution记录的内容。使用GC日志文件旋转.

jre1.9及以上有描述,1.8暂无描述,实验可用

-XX:NumberOfGClogFiles=number of files

Handles large log files. The number of files must be greater than or equal to 1. The default is 1.处理大型日志文件。文件数必须大于或等于1。默认值为1。

jre1.9及以上有描述,1.8暂无描述,实验可用

 

-XX:GCLogFileSize=number

处理大型日志文件。数字可以是numberM或numberK的形式。默认设置为512K。

 jre1.9及以上有描述,1.8暂无描述,实验可用

-Xloggc

设置要将详细GC事件信息重定向到其中进行日志记录的文件。写入此文件的信息类似于-verbose:gc的输出,其中包含自每个记录的事件之前的第一个gc事件以来经过的时间。-Xloggc选项重写-verbose:gc,如果这两个选项都是用同一个java命令给出的。

Sets the file to which verbose GC events information should be redirected for logging. The information written to this file is similar to the output of -verbose:gc with the time elapsed since the first GC event preceding each logged event. The -Xloggc option overrides -verbose:gc if both are given with the same javacommand.

  1. 飞行器记录

JFR飞行记录分为两种 - 连续记录和分析记录。

连续录制:默认设置,连续录制是始终开启并保存的录制,应用程序遇到任何问题,可从最后一小时转储数据中,查看问题发生时的情况。使用开销极低的录制配置项。配置项中不包括获得堆统计信息,但仍会收集大量有用的数据。连续录制非常适合长期运行,在调试极少发生的问题时非常有用。可使用jcmd或JMC手动转储录制。还可在JMC中设置触发器,以在满足某些特定条件时转储飞行记录。

分析记录不连续):打开后,运行一段时间,然后,停止的记录。通常,此模式的配置文件记录会启用更多事件,可能对性能产生影响,根据对分析记录使用情况,修改打开的事件。

 

JFR是商业功能,须指定-XX:+UnlockCommercialFeatures

分析记录

启动20秒后开启记录,记录时间为60秒,该记录将保存到名为myrecording.jfr的文件中

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=delay=20s,duration=60s,name=myrecording,filename=/opt/tomcat/myrecording.jfr,settings=profile

 

settings参数采用模板的路径和名称。默认模板位于jre/lib/jfr文件夹中,两个标准配置文件是:分别是用于连续录制和低开销设置的配置文件,及收集更多数据,用于分析记录的配置文件。

连续录制:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=6h,settings=default

 

参数简单介绍:

 

-XX:+FlightRecorder

 

在应用程序运行时启用Java飞行记录器(JFR)。这是一个与-XX:+UnlockCommercialFeatures选项结合使用的商业功能,

Enables the use of the Java Flight Recorder (JFR) during the runtime of the application. This is a commercial feature that works in conjunction with the -XX:+UnlockCommercialFeatures option as follows:

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder

If this option is not provided, Java Flight Recorder can still be enabled in a running JVM by providing the appropriate jcmd diagnostic commands.

 

-XX:StartFlightRecording=parameter=value

 

 为Java应用程序启动JFR记录。这是一个与-XX:+UnlockCommercialFeatures选项结合使用的商业功能。此选项相当于JFR.start diagnostic命令,该命令在运行时启动录制。开始JFR录制时,可以设置以下参数:

compress={true|false}

指定是否使用gzip文件压缩实用程序压缩磁盘上的JFR记录日志文件(JFR类型)。仅当指定了filename参数时,此参数才有效。默认设置为false(录制不压缩)。要启用压缩,请将参数设置为true。

defaultrecording={true|false}

指定录制是连续后台录制还是运行有限时间。默认情况下,此参数设置为false(录制运行的有限时间)。要使录制连续运行,请将参数设置为true。

delay=time

指定Java应用程序启动时间与录制开始之间的延迟。附加s以秒为单位指定时间,m表示分钟,h表示小时,d表示天(例如,指定10m表示10分钟)。默认情况下,没有延迟,此参数设置为0。

dumponexit={true|false}

指定当JVM以受控方式终止时,是否应生成JFR数据的转储文件。默认情况下,此参数设置为false(未生成出口的转储文件)。要启用它,请将参数设置为true。

转储文件将写入filename参数定义的位置。

例如:

-XX:StartFlightRecording=name=test,filename=D:\test.jfr,dumponexit=true

duration=time

指定录制的持续时间。附加s以秒为单位指定时间,m表示分钟,h表示小时,d表示天(例如,指定5h表示5小时)。默认情况下,持续时间不受限制,此参数设置为0。

filename=path

指定JFR记录日志文件的路径和名称。

name=identifier

指定JFR记录的标识符。默认设置为录制x。

maxage=time

指定为默认记录保留的磁盘数据的最大年龄。附加s以秒为单位指定时间,m表示分钟,h表示小时,d表示天(例如,指定30s表示30秒)。默认情况下,最大年龄设置为15分钟(15m)。

maxsize=size

指定为缺省记录保留的磁盘数据的最大大小(以字节为单位)。追加k或k,以指定大小(KB)、m或m,以指定大小(MB)、g或g,以指定大小(GB)。默认情况下,磁盘数据的最大大小不受限制,并且该参数设置为0。

settings=path

指定事件设置文件(JFC类型)的路径和名称。默认情况下,使用default.jfc文件,该文件位于JAVA_HOME/jre/lib/jfr中。

例子:

可以通过用逗号分隔多个参数来指定值。例如,要将记录保存到当前工作目录中的test.jfr,并指示jfr压缩日志文件,请指定以下内容:

-XX:StartFlightRecording=filename=test.jfr,compress=true

 

-XX:FlightRecorderOptions=parameter=value

设置控制JFR行为的参数。这是一个与-XX:+UnlockCommercialFeatures选项结合使用的商业功能。此选项只能在启用JFR时使用(即指定了-XX:+FlightRecorder选项)。

以下列表包含所有可用的JFR参数:

 

defaultrecording={true|false}

指定录制是连续后台录制还是运行有限时间。默认情况下,此参数设置为false(录制运行的有限时间)。要使录制连续运行,请将参数设置为true。

dumponexit={true|false}

指定当JVM以受控方式终止时,是否应生成JFR数据的转储文件。默认情况下,此参数设置为false(未生成出口的转储文件)。要启用它,请将参数设置为true,并将defaultrecording设置为true。

转储文件被写入由dumponexitpath 参数定义的位置。

dumponexitpath=path

指定当JVM以控制方式退出时创建的具有JFR数据的转储文件的路径和名称,如果您设置了dumponexit=true参数。仅当同时设置defaultrecording=true时,设置路径才有意义。

如果指定的路径是目录,JVM将分配一个显示创建日期和时间的文件名。如果指定的路径包含文件名,并且如果该文件已经存在,JVM通过将日期和时间戳附加到指定的文件名来创建新文件。

globalbuffersize=size

指定用于数据保留的主内存总量(字节)。追加k或k,以指定大小(KB)、m或m,以指定大小(MB)、g或g,以指定大小(GB)。默认情况下,大小设置为462848字节。

loglevel={quiet|error|warning|info|debug|trace}

指定JFR写入日志文件的数据量。默认情况下,设置为“info”。

maxage=time

指定为默认记录保留的磁盘数据的最大年龄。附加s以秒为单位指定时间,m表示分钟,h表示小时,d表示天(例如,指定30s表示30秒)。默认情况下,最大年龄设置为15分钟(15m)。

仅当设置disk=true参数时,此参数才有效。

maxchunksize=size

指定记录中数据块的最大大小(以字节为单位)。追加k或k,以指定大小(KB)、m或m,以指定大小(MB)、g或g,以指定大小(GB)。默认情况下,数据块的最大大小设置为12 MB。

maxsize=size

指定为缺省记录保留的磁盘数据的最大大小(以字节为单位)。追加k或k,以指定大小(KB)、m或m,以指定大小(MB)、g或g,以指定大小(GB)。默认情况下,磁盘数据的最大大小不受限制,并且该参数设置为0。

仅当设置disk=true参数时,此参数才有效。

repository=path

指定用于临时磁盘存储的存储库(目录)。默认情况下,使用系统的临时目录。

samplethreads={true|false}

指定是否启用线程采样。仅当采样事件与此参数一起启用时,才会发生线程采样。默认情况下,此参数处于启用状态。

settings=path

指定事件设置文件(JFC类型)的路径和名称。默认情况下,使用default.jfc文件,该文件位于JAVA_HOME/jre/lib/jfr中。

stackdepth=depth

JFR的堆栈跟踪的堆栈深度。默认情况下,深度设置为64个方法调用。最大值为2048,最小值为1。

 threadbuffersize=size

  指定每个线程的本地缓冲区大小(字节)。追加k或k,以指定大小(KB)、m或m,以指定大小(MB)、g或g,以指定大小(GB)。此参数的值越高,允许在不争用的情况下收集更多数据,以将其刷新到全局存储。它可以在线程丰富的环境中增加应用程序占用空间。默认情况下,本地缓冲区大小设置为5 KB。

可以通过用逗号分隔多个参数来指定值。例如,要指示磁盘碎片整理程序将连续记录写入磁盘,并将数据块的最大大小设置为10 MB,请指定以下内容:

-XX:FlightRecorderOptions=defaultrecording=true,disk=true,maxchunksize=10M

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章