【问题标题】:Does VisualVM CPU profiling work on a Mac?VisualVM CPU 分析是否可以在 Mac 上运行?
【发布时间】:2011-05-05 06:48:41
【问题描述】:

我正在尝试使用 VisualVM 在带有 64 位 VM 的 Mac 上进行分析,但没有成功。

它似乎只在很长的时间间隔内更新(我认为它根本不会配置文件,直到我离开键盘十分钟,然后回来发现一个更新。我相信应该每 2 秒运行一次) .

大多数时候,它只是与“尚无可用的分析信息”消息一起出现。它工作的一次,总共发现了 4 个方法调用。在那个时间范围内会发生数百万。

应用退出时的快照显示一些系统线程,但没有我的代码。

我没有更改任何默认设置。我已经检查过它不排除我的代码。

VisualVM 是否可以在 Mac 上用于分析 64 位 JVM?

我已经尝试过最新 JDK 的 jvisualvm 和 java.net 的稍晚版本。

java 版本“1.6.0_22” Java(TM) SE 运行时环境 (build 1.6.0_22-b04-307-10M3261) Java HotSpot(TM) 64 位服务器 VM(内部版本 17.1-b03-307,混合模式)

系统版本:Mac OS X 10.6.4 (10F569)

有什么想法吗?对你有用吗?

谢谢!

【问题讨论】:

  • 内存分析似乎工作正常,并且按预期更新(每隔几秒)。
  • 最新 VisualVM(1.3.1 build 100916)中的采样功能似乎可以工作。
  • 我遇到了同样的问题:采样功能有效,但 CPU 分析无效。不幸的是,我不能将其归因于没有返回的单个方法。

标签: java profiling visualvm jvisualvm


【解决方案1】:

某种意义上的飞行员错误。

我正在对一个测试应用程序进行基准测试,该应用程序创建了一个线程,并在线程的 run 方法中循环运行。它使用 cpu、sleep() 和 println() 进行了一个紧密循环。

但问题在于它是一种方法。似乎 VisualVM 仅在您退出时跟踪方法。因此,由于我有一个方法循环,​​它从未退出该方法,也从未生成跟踪事件。

我将代码从 run() 方法移到另一个从 run() 重复调用的方法中,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 2011-11-04
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多