Anwendung nutzt plötzlich nicht mehr 100% CPU

Eistoeter

Mitglied
Hallo,

ich programmiere derzeit eine Java-Anwendung, die alle Kerne des Systems voll ausnutzen soll. Dazu stellt man die Größe des Threadpools, den die Anwendung hat, in einer externen config-Datei einfach auf die Anzahl Kerne, die man zur Verfügung hat.

Bisher hat das auch top funktioniert, und wenn ich auf den Task Manager bei Windows gehe, dann raste die CPU-Auslastung nach dem Start der Anwendung auf 100% hoch und blieb dort auch.

Heute habe ich fleißig weiter programmiert und habe gerade das Programm gestartet, damit es die Nacht lang durchlaufen lassen kann. Dabei ist mir aufgefallen, dass der Fortschritt DEUTLICH langsamer ist. Ein Blick auf den Task-Manager zeigt nur eine Auslastung von 75% bis 80%.

Ich weiß einfach nicht, an was das jetzt plötzlich liegen kann. Ich habe keine zusätzlichen Datei-Zugriffe eingebaut, Netzwerk-Zugriffe oder Datenbank-Zugriffe gibt es auch überhaupt nichts in dem Programm.

Neustart half auch nichts. Mein System ist ein core i5, 4gb ram, 64bit windows 7. Hat denn irgendjemand eine Idee, woran das jetzt plötzlich liegen kann? Das ist ein ziemlich großes Problem für mich, da nun das Programm nicht schnell genug für meine Zwecke durchlaufen kann. Ein Durchlauf, der vorher 20 Minuten gedauert hat, dauert jetzt über 2 Stunden. Wäre für jede Idee äußerst dankbar.

Edith: Konnte das Problem etwas eingrenzen. Ich habe mal den Stand vom vorherigen Tag wiederhergestellt und das Programm gestartet. Hier ist es so, dass die CPU-Auslastung wieder sofort auf 100% hochschießt und dort bleibt. Das Problem ist also nicht Hardware-bedingt sondern muss tatsächlich mit einer Code-Änderung zu tun haben, die ich heute gemacht habe. Aber ich habe wie gesagt überhaupt keinen blassen Schimmer, welche das sein könnte :-(
 
Zuletzt bearbeitet:
Das kann so viele Ursachen haben. Als erste Möglichkeit fällt mir spontan ein: Programm um etwas erweitert, was eine synchronisation benötigt oder standartgemäß implementiert hat? (Vector, LinkedBlockingQueue etc.)
 
Danke, dein Tipp war Gold wert ;-)

Ich habe gerade das Problem weiter eingegrenzt, indem ich mich SVN Revision für SVN Revision herangetastet habe, ab wann das Problem auftritt (gut dass ich obwohl ich ein einzelner Entwickler bin SVN nutze und immer fleißig Commit Comments eintippe ;-)).

Mit deinem Tipp zusammen ergibt das jetzt Sinn. Ich habe dort ein Refactoring gemacht, wo ich verstärkt auf die Properties - Klasse von java.util zugreife. Die wiederum erbt von Hashtable und die get - Zugriffe sind synchronized. Oh Mann ...
 

Neue Themen


Zurück
Oben