PrintGCApplicationStoppedTime

PrintGCApplicationStoppedTime

我的应用程序正在使用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'
  • 从“警告”级别到“stderr”级别的所有消息的默认输出
    仍然有效
  • -Xlog:gc+rt+compiler*=debug,meta*=warning,svc*=off
    

    标记至少带有“gc”,“rt”和“compiler”标签的
  • 日志消息
    使用“跟踪”级别为“标准输出”,但仅记录已标记的消息
    具有“警告”或“错误”级别的“元”并关闭所有
    标记为“svc”的邮件
  • 从“警告”级别到“stderr”级别的所有消息的默认输出
    仍然有效
  • 09-12 16:57