Ich habe ein einfaches Programm in Java erstellt:
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Wenn ich dies auf einem Linux-Rechner ausführe, zeigt es 100 % CPU-Auslastung an, führt aber nicht dazu, dass das Betriebssystem langsam erscheint. Wenn ich jedoch genau denselben Code unter Windows ausführe, zeigt er nur etwa 20 % CPU-Auslastung an.
Ich verwende Oracle JRE unter Windows und OpenJDK 6 unter Linux.
Ich frage mich, ob der Scheduler von Windows Threads zufällig vorbelegt und der von Linux nicht?
Dies hängt von der Aufgabenplanung des Betriebssystems ab.
– Subhrajyoti Majumder
29. Januar 2013 um 9:07 Uhr
wie viele Kerne hast du? Der Windows-Task-Manager meldet 100 %, wenn ALLE Kerne ausgelastet sind. Macht Ihr Linux-Tool etwas Ähnliches oder meldet es 100% für die Arbeit von 1 Kern, und wenn alle Kerne beschäftigt sind, ist es
100*N cores %
?– Yiding
29. Januar 2013 um 9:08 Uhr
Ich habe 4 Kerne und unter Linux verwende ich das Systemmonitor-Tool
– Maniek
29. Januar 2013 um 9:10 Uhr
@Quoi Nicht wirklich. Wenn nur dieses Programm ausgeführt wird, wird der Thread sowohl unter Windows als auch unter Linux ohne Unterbrechung ausgeführt.
– David Heffernan
29. Januar 2013 um 9:26 Uhr