Mengapa "sementara(benar)" tanpa "Benang.tidur" menyebabkan penggunaan CPU 100% di Linux tapi tidak di Windows?

Saya telah membuat sebuah program sederhana dalam java:

public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}

Jika saya menjalankan ini pada mesin Linux, hal ini menunjukkan penggunaan CPU 100%, tapi doesn't menyebabkan OS muncul lambat. Namun, jika saya menjalankan kode yang sama persis pada Windows, ini hanya menunjukkan sekitar 20% penggunaan CPU.

Saya menggunakan Oracle JRE pada Windows dan OpenJDK 6 di Linux.

I'm wondering jika Windows' scheduler mendahului benang secara acak dan Linux's doesn't?

Mengomentari pertanyaan (4)
Larutan

Secara default, top di Linux berjalan dalam apa yang disebut modus IRIX, sedangkan Windows Task Manager tidak. Let's mengatakan anda memiliki 4 core:

  • Dengan IRIX mode on, 1 sepenuhnya dimanfaatkan inti adalah 100% dan 4 core 400%.

  • Dengan IRIX mode off, 1 sepenuhnya dimanfaatkan inti adalah 25% dan 4 core adalah 100%.

Ini berarti bahwa secara default, top di Linux akan menampilkan loop tak terbatas sebagai ~100% dan Windows akan menunjukkan hal itu sebagai ~25%, dan itu berarti hal yang sama.

Anda dapat beralih modus IRIX sementara atas berjalan dengan Shift+i. Ini akan membuat mencocokkan angka-angka.

Komentar (4)