【问题标题】:jtop cpu secondsjtop cpu 秒数
【发布时间】:2011-07-06 07:25:37
【问题描述】:

我在 VisualVM 中使用 JConsole 的 JTOP 插件。这让我有些 CPU(秒)使用率。我正在努力理解这句话的意思,是吗?

  • a) 前头的时间(以秒为单位) CPU的运行。
  • b) 时间(以秒为单位) 线程第一次开始运行 时间(它可能不会一直运行)
  • c) 其他时间?

感谢期待。

【问题讨论】:

    标签: java performance cpu visualvm jconsole


    【解决方案1】:

    如果您指的是 JDK 发行版的 demo/management 文件夹中的 JTop Jconsole 插件: 它使用 ThreadMXBean.getThreadCpuTime(long) 来获取 CPU 时间。此方法的 javadoc 指出:

    返回指定 ID 的线程的总 CPU 时间(以纳秒为单位)。返回值是纳秒精度,但不一定是纳秒精度。如果实现区分用户模式时间和系统模式时间,则返回的 CPU 时间是线程在用户模式或系统模式下执行的时间量。

    如果指定ID的线程不存活或不存在,该方法返回-1。如果禁用 CPU 时间测量,则此方法返回 -1。如果线程已启动且尚未死亡,则该线程处于活动状态。

    如果在线程启动后启用 CPU 时间测量,Java 虚拟机实现可以选择任何时间,直到并包括启用功能的时间作为 CPU 时间测量开始的时间点。

    返回: 如果指定 ID 的线程存在、线程处于活动状态且启用 CPU 时间测量,则为指定 ID 的线程的总 CPU 时间; -1 否则。

    这个值在放入表格之前由插件除以 10E9,因此您可以看到进程使用 CPU 的时间量(以秒为单位)。

    【讨论】:

    • 对不起,在我写我的时候似乎已经发布了相同的答案。 (必须变得更快......)
    • 添加粗略的答案,然后通过编辑进行详细说明 - 这样更快;)
    【解决方案2】:

    我会说它是a),即。到目前为止线程在 CPU 上运行所花费的时间。

    它实际上是ThreadMXBean 的用户界面。

    来自那个 JavaDoc:

    如果实现区分用户模式时间和系统模式时间,则返回的 CPU 时间是当前线程在用户模式或系统模式下执行的时间量。

    这意味着总体 CPU 时间也是执行时间。

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2019-05-01
      • 1970-01-01
      • 2018-02-11
      • 2020-07-03
      • 2021-06-25
      • 2012-08-06
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多