Java任务控制监听器?
Posted
技术标签:
【中文标题】Java任务控制监听器?【英文标题】:Java Mission Control Listener? 【发布时间】:2017-07-17 01:32:30 【问题描述】:我目前有一些想要分析的 Java 代码。在阅读了一些关于它的有希望的内容后,我决定使用 Java Mission Control。但是,到目前为止,我咨询过的每个资源都告诉我首先启动我想要分析的进程,然后才在任务控制已经运行后“附加”或分析代码(例如来自 oracle 的这个视频:@ 987654321@)。
有没有办法从一开始就进行分析?谢谢
【问题讨论】:
【参考方案1】:有一种方法可以在您开始该过程时开始分析记录。
示例:运行分析记录 10 分钟。
java -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=10m,name=Test,filename=recording.jfr,settings=profile -jar target/highcpu-0.0.1.jar
更多详情请看我的文章:Using Java Flight Recorder
【讨论】:
【参考方案2】:没有很好的记录,但有可能。 你需要使用这个 jvm 选项
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=
前两个是强制性的,而最后一个需要配置各种参数,您可以在here 找到解释。 理解每个参数的含义并不简单,但通过一些试验和错误,您可以很容易地找到一组好的选项。
作为参考,这是一个最小的功能配置:
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=6h,settings=default MyApp
【讨论】:
【参考方案3】:JDK 11:
-XX:StartFlightRecording
JDK 9、JDK 10:
-XX:+UnlockCommercialFeatures
-XX:StartFlightRecording
JDK 8u40,
-XX:+UnlockCommercialFeatures
-XX:StartFlightRecording=name=whatever
JDK 7u4、JDK 8u20:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-XX:StartFlightRecording=name=whatever
如果您想避免一起附加到进程,您可以指定一个文件名,即 -XX:StartFlightRecording=filename=rec.jfr,然后通过设置持续时间(即 duration=)在一段时间后转储记录60s,或者如果你只希望它在 JVM 退出时发生:
-XX:StartFlightRecording=
filename=rec.jfr,dumponexit=true
您可以在 JMC 中打开然后打开录制文件。在 JDK 11 中,这已被进一步简化,因此您只需指定:
-XX:StartFlightRecording:filename=c:\recs
并且文件名会在指定目录下生成,JVM退出时会自动转储。
【讨论】:
以上是关于Java任务控制监听器?的主要内容,如果未能解决你的问题,请参考以下文章