【问题标题】:Handle PrintGCApplicationStoppedTime flag in java 9在 java 9 中处理 PrintGCApplicationStoppedTime 标志
【发布时间】:2017-08-28 04:52:42
【问题描述】:

我的应用程序正在使用 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 帖子表明该选项已被弃用,但他的旗帜打印的信息是否有任何替代方案或此信息不再可用?

【问题讨论】:

    标签: java garbage-collection java-9


    【解决方案1】:

    这里有几件事要知道:

    首先,@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
    

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

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

    【讨论】:

    • @Alan 指出的发行说明是一本很好的读物,可以了解所有正在发生的变化。
    【解决方案2】:

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

    【讨论】:

    • 您的链接已损坏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多