首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java任务控制监听器?

Java任务控制监听器?
EN

Stack Overflow用户
提问于 2017-07-17 09:32:30
回答 3查看 239关注 0票数 0

我目前有一些Java代码,我想要分析它们。在读到一些有希望的东西后,我决定使用Java任务控制。然而,到目前为止,我查阅过的每个资源都告诉我首先启动我想要分析的进程,然后在它已经运行时才从任务控制中心附加或分析代码(例如,这个视频来自oracle:https://youtu.be/WMEpRUgp9Y4?t=14m56s)。

有没有一种方法可以从一开始就进行性能分析呢?谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-07-17 14:59:25

有一种方法可以在启动过程时启动性能分析记录。

示例:运行性能分析记录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

票数 0
EN

Stack Overflow用户

发布于 2017-07-17 15:01:00

这并没有很好的记录,但有这种可能性。您需要使用此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
票数 0
EN

Stack Overflow用户

发布于 2018-06-17 06:44:12

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

如果您希望避免全部附加到进程,您可以指定一个文件名,即JVM,然后通过设置持续时间(即duration=60s )在一段时间后转储记录,或者如果您希望仅在-XX:StartFlightRecording=filename=rec.jfr退出时发生:

 -XX:StartFlightRecording=
 filename=rec.jfr,dumponexit=true

您可以在JMC中打开然后再打开录制文件。在JDK 11中,这已进一步简化,因此您只需指定:

 -XX:StartFlightRecording:filename=c:\recs

文件名将在指定的目录中生成,并在JVM退出时自动转储。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45134854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档