是否有可以从 Linux 终端运行的类似 gprof 的 Java 分析器?我发现的所有工具都是 GUI 程序,我需要从终端运行它。
5 回答
JVM 有一个名为HPROF的内置分析器。您可以像这样在命令行上启用它:
java -agentlib:hprof=file=hprof.txt,cpu=samples MyClass
这将在程序完成时将配置文件信息转储到文本文件中。除了分析 CPU 使用情况,它还可以跟踪堆使用情况。
开源工具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()
JXInsight/OpenCore 具有术语/shell 报告插件(顶部、队列、堆栈等),它们将定期输出其计量和度量数据。还可以使用 Open API 访问此信息,该 API 允许在 JVM 中实时检查模型或使用快照文件句柄离线检查。两者都通过插件 API 得到支持,它是如何工作的。
http://www.jinspired.com/products/opencore(商业)
是否存在不能使用 GUI 的技术原因?它只是由工作流程习惯驱动的偏好吗?如果没有,那么您可以随时试用我们的免费 JXInsight/Opus Java 版——一种高效且可扩展的代码级延迟性能测量解决方案,用于快速识别 Java 和 JRuby 应用程序中的热点。
http://www.jinspired.com/products/opus
注意:我是这两个产品的产品架构师。
如果您希望将其用于分析和监控。您可以使用Jvisualvm。
来自应用网站:
描述 Java VisualVM 是一个直观的图形用户界面,可在基于 Java 技术的应用程序(Java 应用程序)在给定的 Java 虚拟机 (JVM*) 上运行时提供有关它们的详细信息。Java VisualVM 的名称来源于 Java VisualVM 以可视方式提供有关 JVM 软件的信息这一事实。
Java VisualVM 将多个监控、故障排除和分析实用程序组合到一个工具中。例如,独立工具 jmap、jinfo、jstat 和 jstack 提供的大部分功能都已集成到 Java VisualVM 中。其他功能,例如 JConsole 工具提供的一些功能,可以作为可选插件添加。
编辑: 因为您想要终端方法。请参阅此链接Triggering a Javadump。它描述了 java 转储的创建。