在java 9中处理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. 

这篇文章表明该选项已被弃用,但是他的旗帜打印的信息是否有其他选择,或者此信息不再可用?

在那里很少有人知道:

首先,@ apangin的答案很好地总结了PrintGCApplicationStoppedTime打印安全点内部所花费的时间。

为了将更多细节转储到您的应用程序的安全点,您应该更好地利用:

 -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 

其次,Java 9计划在JEP#271下实现统一GC日志记录 ,同时在JEP#158下使用Unified JVM日志记录

继续使用-Xlog作为新的命令行选项来控制来自JVM的所有组件的日志记录。 因此,日志记录将遵循语法(引用):

 -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 

选择几个不同的例子来学习:

  1.  -Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024 
    • 使用“跟踪”级别使用“跟踪”级别标记为“gc”标记的日志消息,其中包含5个大小为1MB且基本名称为“gctrace.txt”的文件,并使用装饰“uptimemillis”和“pid”
    • “警告”到“stderr”级别的所有消息的默认输出仍然有效
  2.  -Xlog:gc+rt+compiler*=debug,meta*=warning,svc*=off 
    • 使用’trace’级别标记至少’gc’和’rt’以及’compiler’标记的日志消息为’stdout’,但仅记录标记为’meta’且级别为’warning’或’error’的消息并关闭所有消息标记为’svc’
    • “警告”到“stderr”级别的所有消息的默认输出仍然有效

另请参阅JDK 9发行说明,其中详细介绍了统一日志记录(-Xlog)的含义: http ://jdk.java.net/9/release-notes#JDK-8145092您将看到PrintGCApplicationStoppedTime和几个选项已被删除。