当前位置: 首页 > 知识库问答 >
问题:

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

王兴庆
2023-03-14
public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}

我在Windows上使用Oracle JRE,在Linux上使用OpenJDK6。

我想知道Windows的调度程序是否随机抢占线程而Linux的没有?

共有1个答案

蓟清野
2023-03-14

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

>

  • IRIX模式下,1个堆芯的充分利用率为100%,4个堆芯的充分利用率为400%。

    在IRIX模式关闭时,1个核心的充分利用率为25%,4个核心的充分利用率为100%。

  •  类似资料:
    • 问题内容: 我用Java创建了一个简单的程序: 如果我在Linux机器上运行此程序,它会显示100%的CPU使用率,但不会导致操作系统显示缓慢。但是,如果我在Windows上运行完全相同的代码,则仅显示约20%的CPU使用率。 我在Windows上使用Oracle JRE,在Linux上使用OpenJDK 6。 我想知道Windows的调度程序是否会随机抢占线程,而Linux的不是吗? 问题答案:

    • 问题内容: 当用于运行“ ”(仅作为示例)时,在Windows上我们得到以下信息: 因此,可以按照我的期望很好地打印出该版本。但是在Linux上,我们得到以下信息: 因为gcc尚未收到该选项。 文档没有明确指定Windows下的args应该发生什么,但是它确实说在Unix上, “如果args是一个序列,则第一项指定命令字符串,任何其他项都将被视为其他shell参数。 。” 恕我直言,Windows

    • 我使用Win 10 Pro N(版本1709)作为开发机器,使用Windows Server 2016 Standard(版本1607)作为生产服务器。 我目前正在开发一个使用MongoDb作为数据库的ASP.NET Core2应用程序。 几天前,我第一次偶然发现了这个想法,将MongoDb作为Docker映像运行。 这是个好决定吗?或者在我的场景中我应该使用Linux容器而不是Windows容器

    • 我在应用程序中使用。在环境中运行应用程序时,应用程序使用的不足1%。当同一个应用程序在我的服务器上运行时,它将使用100%的。当禁用线程时,将恢复正常。 我正在使用和。 下面是线程: 为什么要使用100%的?

    • 问题内容: 在Python控制台中: 给我: 为什么?有人可以用二进制给我解释这个特殊情况吗? 问题答案: 是。 是: 并且是: 这是在两个补1 1翻转所有位,将1加到结果数上,并将结果解释为幅度的 二进制表示形式 ,并添加一个负号(因为数字以1开头): 它是2,但是由于MSB是1 ,所以符号是负数。 值得一提: 想一想,您会发现它本质上是数字-它有两个值和,它们只是整数1和0的“自定义”版本,它

    • 问题内容: 这个问题引起了有关perl中无限循环的问题:while(1)Vs。for(;;)是否存在速度差异?,我决定在python中运行类似的比较。我希望编译器会为和生成相同的字节码,但是python2.7实际上不是这种情况。 以下脚本: 产生以下结果: 使用明显更复杂。为什么是这样? 在其他情况下,python的行为就好像等于1: 为什么要区分两者? 我注意到python3确实使用相同的操作评