我在 VisualVM 中使用 JConsole 的 JTOP 插件。这让我有些 CPU(秒)使用率。我试图理解这个的意思,是吗?
- a) theead 运行 CPU 的时间(以秒为单位)。
- b) 线程第一次开始运行的时间(以秒为单位)(它可能并不总是运行)
- c) 其他时间?
感谢期待。
我在 VisualVM 中使用 JConsole 的 JTOP 插件。这让我有些 CPU(秒)使用率。我试图理解这个的意思,是吗?
感谢期待。
我会说它是a),即。到目前为止,线程在 CPU 上运行的时间。
它实际上是ThreadMXBean的用户界面。
从那个JavaDoc:
如果实现区分用户模式时间和系统模式时间,则返回的 CPU 时间是当前线程在用户模式或系统模式下执行的时间量。
这意味着总体 CPU 时间也是执行时间。
如果您指的是 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 的时间量(以秒为单位)。