我的应用程序正在使用gc标志“PrintGCApplicationStoppedTime”,但是当与Java 9一起运行时,它失败并显示以下错误:
Unrecognized VM option 'PrintGCApplicationStoppedTime'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
This帖子表明该选项已被弃用,但是他的标志打印的信息是否有其他选择,或者该信息不再可用?
最佳答案
几件事要知道:
首先,@ apangin的答案here很好地总结出,PrintGCApplicationStoppedTime
显示了在safepoints内部花费的时间。
为了将更多细节转储到应用程序的安全点上,您最好使用:
-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1
其次,Java 9计划实现Unified GC logging under JEP#271,同时使用Unified JVM Logging under JEP#158
继续使用
-Xlog
作为新的命令行选项,以控制来自JVM所有组件的日志记录。日志记录将因此遵循以下语法(引用):-Xlog[:option]
option := [<what>][:[<output>][:[<decorators>][:<output-options>]]]
'help'
'disable'
what := <selector>[,...]
selector := <tag-set>[*][=<level>]
tag-set := <tag>[+...]
'all'
tag := name of tag
level := trace
debug
info
warning
error
output := 'stderr'
'stdout'
[file=]<filename>
decorators := <decorator>[,...]
'none'
decorator := time
uptime
timemillis
uptimemillis
timenanos
uptimenanos
pid
tid
level
tags
output-options := <output_option>[,...]
output-option := filecount=<file count>
filesize=<file size in kb>
parameter=value
可以从中学习到一些不同的示例的地方是:
-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024
使用'trace'级别将标记有'gc'标记的
旋转文件集,其中包含5个文件,基本名称为1MB
'gctrace.txt'并使用装饰'uptimemillis'和'pid'
仍然有效
-Xlog:gc+rt+compiler*=debug,meta*=warning,svc*=off
标记至少带有“gc”,“rt”和“compiler”标签的
使用“跟踪”级别为“标准输出”,但仅记录已标记的消息
具有“警告”或“错误”级别的“元”并关闭所有
标记为“svc”的邮件
仍然有效