【发布时间】:2012-11-20 22:07:38
【问题描述】:
我们如何为非本地线程定义“线程 CPU 时间”?更具体地说,它是如何在 JVM 上定义的(CPU 大概是从 JVM 中抽象出来的,因此定义可能与较低级别的进程略有不同)......
我正在使用此测量的 JVM 实现:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ThreadMXBean.html,这似乎没有直接定义“线程 CPU 时间”是直接测量的。
【问题讨论】:
-
实际上,除了给定线程消耗的 CPU 时间量之外,可能是什么?我不确定我是否理解这个问题。
-
也许您正在考虑非本地线程。计算非本地线程的 CPU 时间可能很困难,因为 JVM(通常是任何进程)不知道它何时获得 CPU 时间(它可以知道它获得了多少,但是它无法计算使用了哪些线程它)。但是对于本机线程,操作系统会提供该信息。
-
线程 cpu 时间是给定线程(在所有 cpu 上)花费的时间(用户 + 系统)。而且根据热点来源,Solaris是个例外,那里只测量用户时间。
-
是的,这是一个很好的观点。它在真正的 CPU 中是一个非常明显的定义,但在非本机线程中它并不明显。我已经相应地更新了上面的问题。
标签: java multithreading time cpu