【问题标题】:high-performance java profiler高性能java分析器
【发布时间】:2023-12-27 16:41:01
【问题描述】:

我看到这里已经回答了一堆“java profiler 推荐”问题。不过,我的情况有点具体。

我需要分析一个拥有数千名在线用户的生产系统。所以我需要一个轻量级的分析器,它不会让系统减速到停止运行。

我在 Linux 上的 JDK 1.6.0_20 上的 Tomcat 6.0.29 上运行。

我更喜欢免费的开源分析器。但如果有一个商业版显然是最好的选择,那也很好。

【问题讨论】:

  • 你追求什么样的分析?信息越详细,探查器的侵入性就越大。

标签: java profiling profiler


【解决方案1】:

看看 JDK 中的 jvisualvm。

它可以在本地和跨网络(但功能减少)连接到正在运行的进程,并允许您对 CPU 和内存进行分析。看看http://blip.tv/file/1582849

【讨论】:

  • 这看起来很有趣,但我需要跨网络进行概要分析,而 jvisualvm 似乎无法做到这一点。
  • 不可以,但是您可以在本地运行 X 服务器(例如 vmware 中的 knoppix),然后您可以使用本地显示器远程运行 visualvm。
  • 你甚至不需要这样做。 Netbeans 很好地集成了 VisualVM,您所需要的只是安装在您想要分析的机器上的 Netbeans 远程分析包。 NB 有一个向导告诉你如何启动你的远程应用程序(基本上是添加一个-agentpath:file arg)。
  • 很高兴知道。我对 Netbeans 不是很熟悉。 Remote Profiling 包是否适用于非 Sun JVM?
  • 在 Netbeans 6.9 中看到它似乎适用于 Windows、Linux、Solaris 和 OS X 上基于 Sun 的 JVM。
【解决方案2】:

我更喜欢Java Flight Recorder。它几乎不会导致性能开销,并且有一个不错的 GUI。添加JVM参数

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder
-XX:StartFlightRecording=name=test,filename=test.jfr,dumponexit=true 

并通过 JMC 打开记录。

【讨论】:

    【解决方案3】:

    在不进行分析器争夺的情况下(您可以通过 Google 搜索),CPU 采样通常被认为是计算量最小的分析方法之一。如果您正在分析生产中的应用,这一点至关重要。

    阅读以下 SO 帖子: - Which Java Profiling tool do you use and which tool you think is the best?

    您甚至可以just use the JDK and the hprof tools,尽管即使是基本的分析器也可能会更好。

    正如 skafman 所说,诀窍是限制要分析的类的数量。

    【讨论】:

    • 我要试用 Yourkit。他们的“早期访问”版本可以免费使用,而且他们似乎很容易支持使用 Windows 分析 UI 连接到 Linux 服务器上的 JVM。