在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 := [][:[
选择几个不同的例子来学习:
-
-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024
- 使用“跟踪”级别使用“跟踪”级别标记为“gc”标记的日志消息,其中包含5个大小为1MB且基本名称为“gctrace.txt”的文件,并使用装饰“uptimemillis”和“pid”
- “警告”到“stderr”级别的所有消息的默认输出仍然有效
-
-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和几个选项已被删除。
- Java G1 GC Processing Reference对象运行缓慢
- 使用NIO直接缓冲区时设置-XX:+ DisableExplicitGC的影响
- 强制显式删除Java对象
- Java:PhantomReference,ReferenceQueue和finalize
- Java的G1垃圾收集器(G1GC)中的类卸载
- -XX:-PrintGC和XX:-PrintGCDetails标志做什么?
- Apache NiFi – OutOfMemory错误:SplitText处理器超出了GC开销限制
- 当20%的堆仍然是免费的时,为什么我会得到OutOfMemory?
- 什么时候JVM抛出OutOfMemoryError