开源Java性能分析工具

105

你们能推荐一些与Java一起使用的工具吗?

唯一的要求是它必须是开源的,或者有不太昂贵的学术许可证。


4
当你说“开源”时,你是指免费吗?它们有不同的含义。你的问题是关于“廉价分析器”的吗? - Robert Munteanu
3
"自由"是指自由软件中的"自由"还是指免费软件中的"免费"?哦,让人感到困惑! - Tarski
12个回答

65

3
VisualVM分析器是NetBeans中的独立版本。这是一个非常不错的入门工具。 - Thorbjørn Ravn Andersen
2
一定要在 https://visualvm.dev.java.net/ 上下载最新版本。此外:这就是 NetBeans 使用的分析器。 - Peterdk
我以前使用过 VisualVM 并且取得了成功,但是在尝试对一个 Tomcat 应用程序进行分析时它却崩溃了。这个链接对我很有帮助:https://github.com/jvm-profiling-tools/honest-profiler - Lambart
honest-profiler在JVM 11上无法工作,作者目前也没有积极参与该项目。https://github.com/jvm-profiling-tools/honest-profiler/issues/255 - i336_

23

这里有一个列表(在下面列出,以防链接失效),涉及到的是 IT 技术。

  • JMemProf
  • JMP
  • DrMem
  • JTreeProfiler
  • NetBeans Profiler
  • JAMon API
  • JBoss Profiler
  • MessAdmin
  • InfraRED
  • TomcatProbe
  • Java Interactive Profiler (JIP)
  • Profiler4j
  • Stopwatch
  • JMeasurement
  • DJProf
  • TIJmp
  • Allmon
  • Appspy
  • EurekaJ
  • japex
  • OKTECH Profiler
  • Perf4j

1
你可以将此添加到列表中:https://github.com/jvm-profiling-tools/honest-profiler - Lambart

18

啊。 Netbeans Profiler,在2009年被 developer.com评为“年度产品”获奖者。


12

Java内置了一个基本的分析器,称为 HProf。我发现使用它提供的结果与更全面的特性分析器提供的结果进行比较很有用。


1
我使用 HPROF 已经很多年了 - 虽然它可能不够漂亮,但它帮助我解决了无数的内存和性能问题。 - Gandalf
1
HPROF经常能找到不同的优化点。在YourKit没有给出明显的优化点之后,我通常会使用它。 - Peter Lawrey
4
自 JDK 9 版本开始,已删除此功能。更多细节请参见 http://openjdk.java.net/jeps/240。 - user2418306

7

开源工具jvmtop包含一个基本的控制台剖析器。 示例输出:

 JvmTop 0.7.0 alpha - 15:16:34,  amd64,  8 cpus, Linux 2.6.32-27, load avg 0.41
 http://code.google.com/p/jvmtop

 Profiling PID 24015: org.apache.catalina.startup.Bootstrap

  36.16% (    57.57s) hudson.model.AbstractBuild.calcChangeSet()
  30.36% (    48.33s) hudson.scm.SubversionChangeLogParser.parse()
   7.14% (    11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
   6.25% (     9.95s) net.sf.json.JSONObject.write()
   3.13% (     4.98s) ....kohsuke.stapler.jelly.CustomTagLibrary.loadJellyScri()

4

3
我从未能成功安装TPTP。也许我太笨了,无法使用它。 - quant_dev
@quant_dev:我也遇到了同样的问题,但不知怎么地突然就意外地解决了(Eclipse 重新启动或其他原因?)。但当我使用它时,发现它几乎没有用处,非常缓慢且占用资源,以至于我不得不关闭 Eclipse。一些在我在网上找到的参考资料中提到的更有用的视图,在当前与 Eclipse 3.5 兼容的版本中似乎也不存在了。所以目前它基本上只是一个巨大的无用之物。 - x4u
1
Eclipse TPTP看起来是一个成熟的产品,但是非常慢。我不明白为什么... - Roalt
4
遗憾的是,TPTP现在已经发布了最终版本(v4.7.2)。它已被归档,不再是Eclipse同时发布的一部分。 - joelittlejohn

3
考虑使用最先进的https://github.com/jvm-profiling-tools/async-profiler进行Java性能分析。它是一个低开销采样分析器,不会遭受Safepoint偏见问题。它具有HotSpot特定的API,可以收集堆栈跟踪信息并跟踪内存分配情况。该分析器适用于OpenJDK、Oracle JDK以及其他基于HotSpot JVM的Java运行时环境。此外,它还内置在IntelliJ IDEA Ultimate中:https://www.jetbrains.com/help/idea/cpu-profiler.html
还有类似的https://github.com/jvm-profiling-tools/honest-profiler
关于async-profilerhonest-profiler之间的比较,请参见:https://github.com/jvm-profiling-tools/async-profiler/issues/77

关于async-profiler的精美插图文章:https://hackernoon.com/profiling-java-applications-with-async-profiler-049s2790 - Vadzim

3

如果你正在寻找一个简单易用的开源分析器,你可能想看一下 Jip(Java交互式分析器)。它是在BSD许可证下发布的。我发现它对于小程序非常有用。至少,它给出的结果比hprof更易于理解。


3

Java Mission Control是一款与Eclipse集成的免费开发工具。由于其基于JVM收集的数据进行分析,因此其性能损耗非常低(小于1%)。

这款工具易于使用,同时可以提供其他性能分析工具所没有的许多信息,例如延迟分析、在线内存检查、详细的垃圾回收统计信息等。


2
这是一个快速、简单而有效的方法:只需获取几个线程转储或多次暂停程序,并查看堆栈跟踪。 此处有更详细的介绍。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接