【问题标题】:Is there a console profiler for Java?Java 是否有控制台分析器?
【发布时间】:2012-06-22 20:03:36
【问题描述】:

是否有类似 gprof 的 Java 分析器可以从 Linux 的终端运行? 我找到的所有工具都是 GUI 程序,我需要从终端运行它。

【问题讨论】:

    标签: java linux terminal console profiling


    【解决方案1】:

    JVM 有一个名为HPROF 的内置分析器。您可以像这样在命令行中启用它:

    java -agentlib:hprof=file=hprof.txt,cpu=samples MyClass
    

    这将在程序完成时将配置文件信息转储到文本文件中。除了分析 CPU 使用情况,它还可以跟踪堆使用情况。

    【讨论】:

    • 它分析每个类,或者它可以分析我程序中的所有内容
    • 它描述了每个班级。它将转储截断的堆栈跟踪,这些跟踪有助于找出程序中慢速调用的来源。您可以使用 depth 选项控制堆栈跟踪的大小。
    • 找不到主类:Prime.java。程序将会退出。 {但我设置了主类}
    • 编辑答案:-agentlib 应该出现在要运行的类的名称之前。
    • 好的,首先让您的程序在带有java 的终端中运行而不进行分析。这可能会有所帮助:stackoverflow.com/questions/626940/…
    【解决方案2】:

    开源工具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()
    

    【讨论】:

    • 补充一下,这个输出需要--profile <pid>选项
    【解决方案3】:

    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

    注意:我是这两个产品的产品架构师。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 我找不到如何安装它
      • JDK本身自带的...是一个命令,就像javac/java一样。
      【解决方案5】:

      如果您希望它用于分析和监控。你可以使用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 转储的创建。

      【讨论】:

      • 我认为 jvisualvm 是一个 GUI 应用程序。可以在终端模式下运行吗?
      • 它是一个 GUI 应用程序。但是您可以通过指定远程服务器IP和端口来连接到我们的linux服务器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多