如何自动执行jprofiler以使用不同的参数保存多个目标Java程序的快照

问题描述

我想在打开文件并对其执行读写操作的Java程序中进行概要分析。要读取的文件一个大型XML文件,我想比较内存统计信息/快照以使用批处理/流读取/标准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上通过intelliJ使用jprofiler

解决方法

要使用没有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"));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...