Lebih
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?
158
1
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.