是否可以使用Java为Java Profiler拍摄快照?

时间:2019-01-11 01:39:18

标签: java jvm profiler snapshot

我想定期为运行时制作快照(用于Java探查器的.snapshot文件,如YourKit,JProfiler,VisualVM等),是否可以通过调用方法或其他方式来制作快照?使用Java,可以在同一个jvm上运行吗?

2 个答案:

答案 0 :(得分:1)

我建议您定期运行Java Flight Recorder。

是什么?这是一个与您已经提到的工具类似的配置工具,它捕获了all the usual data

如何使用? Here是有关如何启动它的简短描述。请注意,您要分析的应用程序需要这些额外的JVM参数

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder

最后,对于定期计划,您需要可从crontab使用的命令。为此,您可以使用上一个链接中的示例命令:

jcmd 5368 JFR.start duration=60s filename=myrecording.jfr

其中“ 5368”是您已配置的应用程序的PID,其余部分是不言自明的。

答案 1 :(得分:1)

每个事件探查器将具有不同的机制来定期保存快照。

对于JProfiler,将“计时器”触发器与“保存快照”操作一起使用。如果要在保存快照之前在有限的时间内记录数据,请添加以下触发操作序列:

  • “开始录制”(已选择所需的录制类型)
  • “睡眠”(持续所需的时间)
  • “停止录制”
  • “保存快照”(已选择“向文件名添加唯一编号”)

enter image description here

如果您想以编程方式控制来自同一JVM的记录和保存快照,请使用Controller API,如下所示:

Controller.startCPURecording(true);
Thread.sleep(10000);
Controller.saveSnapshot(new File("snapshot.jps"));