java - 如何使用 hprof 运行 Maven 单元测试

标签 java maven hprof

我试图弄清楚为什么单元测试需要几秒钟而不是几毫秒来运行。这是一个重要的问题,因为超过 300 个测试类,需要 20 分钟才能得到结果。我的希望是在我的 Maven 单元测试中使用性能分析器(如 java HPROF)。然后我会自己分析 hprof 输出。

最佳答案

我将以下argline配置添加到我的surefire插件 block 中

<configuration>
    <forkMode>never</forkMode>
    <argLine>
        -agentlib:hprof=cpu=samples,lineno=y,depth=3,file=hprof.samples.txt
    </argLine>
    ...
<configuration>

您不得 fork JVM。所有测试都必须重用相同的 jvm 才能正常工作。

这会生成一个 hprof 文件(请参阅: https://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html )。这会提示您代码的哪一部分导致速度变慢。就我而言,它是reuseFork=never 和类加载的组合。

关于java - 如何使用 hprof 运行 Maven 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885434/

相关文章:

java - 使用 SAXParser 根据 XSD 验证 XML 结果错误

java - JPA 查询 "Set does NOT contain a certain item"

java - 命令行中的 TortoiseSVN

android - MAT (Eclipse Memory Analyzer) - 如何从内存转储中查看位图

java - 使用 Java 8 迭代时从列表对象中删除空间

Java 正则表达式 代码标题

java - 如何在build.gradle中指定 "pig-0.13.0-h2.jar"依赖?

java - 由于缺少 EmbeddedServletContainerFactory bean,无法启动 EmbeddedWebApplicationContext

java - 如何将 java.hprof.txt 转换为二进制 hprof 格式?

java - jcmd 创建的堆转储文件在哪里?