【发布时间】:2011-07-06 07:25:37
【问题描述】:
我在 VisualVM 中使用 JConsole 的 JTOP 插件。这让我有些 CPU(秒)使用率。我正在努力理解这句话的意思,是吗?
- a) 前头的时间(以秒为单位) CPU的运行。
- b) 时间(以秒为单位) 线程第一次开始运行 时间(它可能不会一直运行)
- c) 其他时间?
感谢期待。
【问题讨论】:
标签: java performance cpu visualvm jconsole
我在 VisualVM 中使用 JConsole 的 JTOP 插件。这让我有些 CPU(秒)使用率。我正在努力理解这句话的意思,是吗?
感谢期待。
【问题讨论】:
标签: java performance cpu visualvm jconsole
如果您指的是 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 的时间量(以秒为单位)。
【讨论】:
我会说它是a),即。到目前为止线程在 CPU 上运行所花费的时间。
它实际上是ThreadMXBean 的用户界面。
来自那个 JavaDoc:
如果实现区分用户模式时间和系统模式时间,则返回的 CPU 时间是当前线程在用户模式或系统模式下执行的时间量。
这意味着总体 CPU 时间也是执行时间。
【讨论】: