首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在没有“Thread.sleep”的情况下,“while(true)”会在Linux上导致100%的CPU使用率,Windows就不会?

为什么在没有“Thread.sleep”的情况下,“while(true)”会在Linux上导致100%的CPU使用率,Windows就不会?
EN

Stack Overflow用户
提问于 2017-12-28 09:16:56
回答 1查看 0关注 0票数 0

我在java中创建了一个简单的程序:

代码语言:javascript
复制
public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}

如果我在Linux机器上运行它,它会显示100%的CPU使用率,但不会导致操作系统显得缓慢。但是,如果我在Windows上运行完全相同的代码,则只会显示大约20%的CPU使用率。

我在Windows上使用Oracle JRE,在Linux上使用OpenJDK 6。

是什么原因?

EN

回答 1

Stack Overflow用户

发布于 2017-12-28 19:06:01

默认情况下,topLinux在所谓的IRIX模式下运行,而Windows任务管理器则不运行。假设你有4个核心:

  • 在IRIX模式下,1个完全使用的核心是100%,4个核心是400%。
  • 在IRIX模式关闭时,1个完全使用的核心是25%,4个核心是100%。

这意味着,默认情况下,top在Linux上将显示一个无限循环为〜100%,Windows将显示为〜25%,这意味着完全相同的事情。

top在使用Shift+ 运行时,可以切换IRIX模式i。这将使数字相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档