java9中gc log参数迁移

网友投稿 392 2023-02-15


java9中gc log参数迁移

本文主要研究一下java9 gc log参数的迁移。

统一JVM及GC的Logging

java9引进了一个统一的日志框架,把gc相关的log输出及配置也给纳入进来了。

相关JEP(JDK Enhancement Proposal)

JEP 158: Unified JVM Logging

JEP 264: Platform Logging API and Service

JEP 271: Unified GC Logging

Xlog语法

-Xlog[:option]

option := [][:[][:[][:]]]

'help'

'disable'

what := [,...]

selector := [*][=]

tag-set := [+...]

'all'

tag := name of tag

level := trace

debug

info

warning

error

output := 'stderr'

'stdout'

[file=]

decorators := [,...]

'none'

decorator := time

uptime

timemillis

uptimemillis

timenanos

uptimenanos

pid

tid

level

tags

output-options := [,...]

output-option := filecount=

filesize=

parameter=value

what

主要是配置tag及level

tag

其中all代表所有的tag,其他的如下:

add,age,alloc,annotation,aot,arguments,attach,barrier,biasedlocking,blocks,bot,breakpoint,bytecode,census,class,classhisto,cleanup,compaction,comparator,constraints,constantpool,coops,cpu,cset,data,defaultmethods,dump,ergo,event,exceptions,exit,fingerprint,freelist,gc,hashtables,heap,humongous,ihop,iklass,init,itables,jfr,jni,jvmti,liveness,load,loader,logging,mark,marking,metadata,metaspace,method,mmu,modules,monitorinflation,monitormismatch,nmethod,normalize,objecttagging,obsolete,oopmap,os,pagesize,parser,patch,path,phases,plab,preorder,promotion,protectiondomain,purge,redefine,ref,refine,region,remset,resolve,safepoint,scavenge,scrub,setting,stackmap,stacktrace,stackwalk,start,startuptime,state,stats,stringdedup,stringtable,subclass,survivor,sweep,systemhttp://,task,thread,time,timer,tlab,unload,update,verification,verify,vmoperation,vtables,workgang

level

主要分off,trace,debug,info,warning,error

output

- stdout(`Sends output to stdout`)

- stderr(`Sends output to stderr`)

- file=filename(`Sends output to text file(s)`)

有如上三种,其中指定file的话,可以使用%p变量表示当前jvm的pid,用%t表示jvm的启动时间戳。比如

-Xlog:gc:demoapp-gc-%p-%t.log

输出的文件名如下:

demoapp-gc-1678-2018-03-01_21-44-18.log

decorators

time -- Current time and date in ISO-8601 format

uptime -- Time since the start of the JVM in seconds and milliseconds (e.g., 6.567s)

timemillis -- The same value as generated by System.currentTimeMillis()

uptimemillis -- Milliseconds since the JVM started

timenanos -- The same value as generated by System.nanoTime()

uptimenanos -- Nanoseconds since the JVM started

pid -- The process identifier

tid -- The thread identifier

level -- The level associated with the log message

tags -- The tag-set associated with the log message

不指定的话,默认是uptime, level, and tags这三个。比如

[3.080s][info][gc,cpu ] GC(5) User=0.03s Sys=0.00s Real=0.01s

实例

-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pid:filecount=5,filesize=1024

tag为gc,levle为trace,rotate文件数为5,每个文件1M,文件名为gctrace.txt,decrotators为uptimemillis和pid

输出实例

[1110ms][1867] GC(2) Pause Remahttp://rk 17M->17M(256M) 2.024ms

[1110ms][1867] GC(2) Finalize Live Data 0.000ms

[1110ms][1867] GC(2) Pause Cleanup 17M->17M(256M) 0.177ms

[1112ms][1867] GC(2) Concurrent Cycle 7.470ms

[2951ms][1867] GC(3) Pause Initial Mark (Metadata GC ThrDBtpreshold) 149M->30M(256M) 27.175ms

[2951ms][1867] GC(4) Concurrent Cycle

[2972ms][1867] GC(4) Pause Remark 32M->32M(256M) 5.132ms

[2974ms][1867] GC(4) Finalize Live Data 0.000ms

[2974ms][1867] GC(4) Pause Cleanup 32M->32M(256M) 0.214ms

[2976ms][1867] GC(4) Concurrent Cycle 25.422ms

迁移

旧版GC相关参数迁移

Legacy Garbage Collection (GC) Flag

Xlog Configuration

Comment

G1PrintHeapRegions

-Xlog:gc+region=trace

Not Applicable

GCLogFileSize

No configuration available

Log rotation is handled by the framework.

NumberOfGCLogFiles

Not Applicable

Log rotation is handled by the framework.

PrintAdaptiveSizePolicy

-Xlog:ergo*=level

Use a level of debug for most of the information, or a level of trace for all of what was logged for PrintAdaptiveSizePolicy.

PrintGC

-Xlog:gc

Not Applicable

PrintGCApplicationConcurrentTime

-Xlog:safepoint

Note that PrintGCApplicationConcurrentTime and PrintGCApplicationStoppedTime are logged on the same tag and aren't separated in the new logging.

PrintGCApplicationStoppedTime

-Xlog:safepoint

Note that PrintGCApplicationConcurrentTime and PrintGCApplicationStoppedTime are logged on the same tag and not separated in the new logging.

PrintGCCause

Not Applicable

GC cause is now always logged.

PrintGCDateStamps

Not Applicable

Date stamps are logged by the framework.

PrintGCDetails

-Xlog:gc*

Not Applicable

PrintGCID

Not Applihttp://cable

GC ID is now always logged.

PrintGCTaskTimeStamps

-Xlog:task*=debug

Not Applicable

PrintGCTimeStamps

Not Applicable

Time stamps are logged by the framework.

PrintHeapAtGC

-Xlog:gc+heap=trace

Not Applicable

PrintReferenceGC

-Xlog:ref*=debug

Note that in the old logging, PrintReferenceGC had an effect only if PrintGCDetails was also enabled.

PrintStringDeduplicationStatistics

-Xlog:stringdedup*=debug

Not Applicable

PrintTenuringDistribution

-Xlog:age*=level

Use a level of debug for the most relevant information, or a level of trace for all of what was logged for PrintTenuringDistribution.

UseGCLogFileRotation

Not Applicable

What was logged for PrintTenuringDistribution.

旧版运行时参数迁移

Legacy Runtime Flag

Xlog Configuration

Comment

TraceExceptions

-Xlog:exceptions=info

Not Applicable

TraceClassLoading

-Xlog:class+load=level

Use level=info for regular information, or level=debug for additional information. In Unified Logging syntax, -verbose:class equals -Xlog:class+load=info,class+unload=info.

TraceClassLoadingPreorder

-Xlog:class+preorder=debug

Not Applicable

TraceClassUnloading

-Xlog:class+unload=level

Use level=info for regular information, or level=trace for additional information. In Unified Logging syntax, -verbose:class equals -Xlog:class+load=info,class+unload=info.

VerboseVerification

-Xlog:verification=info

Not Applicable

TraceClassPaths

-Xlog:class+path=info

Not Applicable

TraceClassResolution

-Xlog:class+resolve=debug

Not Applicable

TraceClassInitialization

-Xlog:class+init=info

Not Applicable

TraceLoaderConstraints

-Xlog:class+loader+constraints=info

Not Applicable

TraceClassLoaderData

-Xlog:class+loader+data=level

Use level=debug for regular information or level=trace for additional information.

TraceSafepointCleanupTime

-Xlog:safepoint+cleanup=info

Not Applicable

TraceSafepoint

-Xlog:safepoint=debug

Not Applicable

TraceMonitorInflation

-Xlog:monitorinflation=debug

Not Applicable

TraceBiasedLocking

-Xlog:biasedlocking=level

Use level=info for regular information, or level=trace for additional information.

TraceRedefineClasses

-Xlog:redefine+class*=level

level=info, =debug, and =trace provide increasing amounts of information.

小结

java9把gc log的选型及输出也给统一到了Xlog中,可以按照官方给出的迁移表进行迁移。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信运动开发接口(微信运动接口api)
下一篇:Spring Boot/VUE中路由传递参数的实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~