java中的接口是类吗
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~