如何自动化 jprofiler 以保存具有不同参数的多个目标 java 程序的快照
How do I automate jprofiler to save snapshots of multiple target java programs with different arguments
我想分析我的 java 程序,我在其中打开一个文件并对其执行读写操作。要读取的文件是一个大 XML 文件,我想比较内存 stats/snapshots 以使用批处理/流读取/标准 xml 解析等技术解析文件
假设我们有三个程序,我想为其保存快照:
BatchParsing.java
public class BatchParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML using batch logic
}
}
StreamReading.java
public class StreamReadingParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML using stream reader
}
}
NormalParsing.java
public class NormalParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML by loading whole file
}
}
此外,我想分析的不是一个文件,而是多个不同大小的文件,而不是 运行 对不同文件的循环,我想通过 运行 每个文件来检查分析结果上述程序分别针对每个文件。
最后,我想按如下方式保存我的分析快照。
- snapshot_results
- batch_results
- small_file.jps
- average_file.jps
- large_file.jps
- stream_results
- small_file.jps
- average_file.jps
- large_file.jps
- normal_parsing_results
- small_file.jps
- average_file.jps
- large_file.jps
我可以使用 GUI 执行上述操作,但希望将所有这些操作自动化。我目前在 macOS 上使用 jprofiler 而不是 intelliJ。
要在没有 JProfiler GUI 的情况下进行分析,请使用 offline profiling。调用
会话->集成向导->新建远程集成
在 JProfiler 主菜单中,在“启动模式”步骤中选择“离线配置文件”选项。然后您将获得在离线模式下加载分析代理所需的 VM 参数。
要记录数据和保存快照,您可以使用触发器或分析 API。在你的情况下,profiling API 会更方便。
要记录 CPU 日期并保存整个应用程序的快照 运行,请像这样包装您的代码:
Controller.startCPURecording(true);
// Your code here
Controller.stopCPURecording();
Controller.saveSnapshot(new File("<snapshot name>.jps"));
我想分析我的 java 程序,我在其中打开一个文件并对其执行读写操作。要读取的文件是一个大 XML 文件,我想比较内存 stats/snapshots 以使用批处理/流读取/标准 xml 解析等技术解析文件
假设我们有三个程序,我想为其保存快照:
BatchParsing.java
public class BatchParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML using batch logic
}
}
StreamReading.java
public class StreamReadingParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML using stream reader
}
}
NormalParsing.java
public class NormalParsing {
public static void main(String[] args) throws Exception {
File = new File("path/to/file")
// parse XML by loading whole file
}
}
此外,我想分析的不是一个文件,而是多个不同大小的文件,而不是 运行 对不同文件的循环,我想通过 运行 每个文件来检查分析结果上述程序分别针对每个文件。
最后,我想按如下方式保存我的分析快照。
- snapshot_results
- batch_results
- small_file.jps
- average_file.jps
- large_file.jps
- stream_results
- small_file.jps
- average_file.jps
- large_file.jps
- normal_parsing_results
- small_file.jps
- average_file.jps
- large_file.jps
我可以使用 GUI 执行上述操作,但希望将所有这些操作自动化。我目前在 macOS 上使用 jprofiler 而不是 intelliJ。
要在没有 JProfiler GUI 的情况下进行分析,请使用 offline profiling。调用
会话->集成向导->新建远程集成
在 JProfiler 主菜单中,在“启动模式”步骤中选择“离线配置文件”选项。然后您将获得在离线模式下加载分析代理所需的 VM 参数。
要记录数据和保存快照,您可以使用触发器或分析 API。在你的情况下,profiling API 会更方便。
要记录 CPU 日期并保存整个应用程序的快照 运行,请像这样包装您的代码:
Controller.startCPURecording(true);
// Your code here
Controller.stopCPURecording();
Controller.saveSnapshot(new File("<snapshot name>.jps"));