为什么对于没有多线程的Java程序,gtime命令返回的CPU使用率> 100%?

酸味:

我尝试使用gtime命令(我相信这是Mac OSx等效于Unix time命令)来获取Java程序的执行时间。但结果似乎令人困惑:

  1. 即使程序没有产生任何线程,CPU使用率也显示> 100%。
  2. 即使我的代码中没有多线程,实时也比用户时间少。

这是我得到的:

> gtime java主

7.36用户0.29系统0:02.11已运行362%CPU(0avgtext + 0avgdata 306264maxresident)k 0输入+0输出(273major + 114934minor)页面故障0交换

如您所见,CPU使用率为362%,用户时间(7.36s)>>实时(2.11s)。谁能解释为什么会这样?我正在使用Macbook Pro,它具有2.60GHz(4核)处理器的Intel®Core™i7-6700HQ CPU。

附带说明一下,使用Java运行“ hello world”程序还会返回CPU使用率> 100%。

> gtime java HelloWorld

你好,世界!0.14用户0.04系统0:00.14经过124%CPU(0avgtext + 0avgdata 33668maxresident)k 0输入+ 0输出(0major + 10288minor)页面故障0交换

卡罗尔·道贝克(Karol Dowbecki):

即使您运行一个简单的main()程序,JVM也会启动多个后台线程这些线程正在执行JIT编译,RMI处理,对象完成或其他系统任务。您可以通过手动调试或进行线程转储来查看这些线程。其次,当今使用的大多数垃圾收集器实现都是并行或多线程的(或两者都是),它们将尝试使用所有可用的CPU内核来缩短GC暂停。

上面所有这些都会导致JVM使用多个CPU内核。大多数工具会将其报告为CPU利用率超过100%。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在多线程应用程序中达到100%的CPU使用率?

没有100%的内存使用率

无法从线程类获得100%的CPU使用率

C程序守护程序使用100%的CPU使用率

为什么不带“ Thread.sleep”的“ while(true)”在Linux上导致100%的CPU使用率,而在Windows上却没有?

如何从C程序获得100%的CPU使用率

Ubuntu 19.10 CPU 使用率 100%

最高输出:CPU使用率> 100%

调试JBoss 100%CPU使用率

jvmtop CPU 使用率 >100%

CPU使用率激增至100%

插入笔记本电脑后,为什么CPU使用率达到100%?

为什么我的并行任务代码无法达到100%的CPU使用率?

为什么无限循环不会使CPU使用率达到100

为什么top所报告的CPU使用率超过100%?

主循环中的多个事件源没有 100% 的 CPU 使用率

Windows 10上100%的磁盘使用率,而没有任何应用程序使用它

Htop 显示一个核心在 100% cpu 使用率,但没有进程使用太多 cpu

为什么 EC2 服务器上的多个 Ruby 进程会导致 100% 的 CPU 使用率?

在JSF saveState()期间,线程在HashMap中停留在100%CPU使用率

Htop在新安装的17.10上显示线程1上100%的CPU使用率

VMWare工作站CPU使用率达到100%

CPU使用率:用户,系统,闲置总等于100%?

Ubuntu 14.04 nc 100%CPU使用率

Windows Vista上的CPU使用率固定为100%

总的CPU使用率(最高输出)如何超过100%?

AWS CloudWatch-100%CPU使用率

锁定屏幕时,CPU使用率达到100%

NAS:100%系统(内核)CPU使用率