Performanzprobleme mit Java6

Wurm

Mitglied
Hallo Zusammen,

ich habe eine Client-Server-Anwendung. Ich wollte diese Anwendung nun von Java4 (jdk1.4.2_05) auf Java 6 (jdk1.6.0_20) umstellen. Der Code selbst hat sich NICHT verändert. Leider habe ich nun mit Performanzproblemen zu kämpfen.
Wenn ich eine größere Funktion aufrufe, die ein externes C++ Programm aufruft (Bsp. D:/PROGRAMME/Testit/datei.exe -WORK WORK.INI -DATE 20110329), steigt die Größe des Pagefiles enorm an und die Performanz meiner Anwendung ist im Keller.
Ich habe wirklich nur von Java4 auf Java6 umgestellt. Rechner ist derselbe. Woran kann das liegen? Ist irgend jemandem derartiges bekannt?

Grüße,
der Wurm
 

muckelzwerg

Bekanntes Mitglied
Pagefile ist die Auslagerungsdatei. Wenn die vorher nicht benutzt wurde, dann ist der Speicherverbrauch gestiegen, oder der verfügbare Speicher gesunken.
Hast Du mit dem Wechsel vielleicht irgendwelche Argumente wie "-Xmx" etc. für das Speichermanagement geändert/überschrieben?

Was hat es mit dem Server auf sich? Ist das überhaupt relevant? Verbraucht das C++-Programm den Speicher? Ist es egal, welches Programm das ist? Kann Dir das Programm mehr Infos geben wo das Problem auftritt? ...
 

Wurm

Mitglied
Die Argumente wurden definitiv nicht verändert. Das mit dem Server ist nicht relevant.
Leider ist das C++-Programm ein externes, ich habe nur die exe und kann deshalb leider nicht dort hinein schauen. Aber offensichtlich hat sich zwischen den Java-Versionen im Zusammenspiel mit solch einem Aufruf externer Programme was geändert, sonst bekäme ich nicht diese Problem.
Seltsamerweise wurde mir gesagt, dass das Problem auch nicht in allen Ländern auftritt. Z.b. wenn die Österreicher mein Programm unter Java6 laufen lassen, haben die dort keine derartigen Probleme.
WIe kann ich denn prüfen, ob das C++ Programm den Speicher verbraucht? Und wenn dieses Programm sich nicht verändert hat, sondern nur das jdk meiner Java Anwendung, kann das dann überhaupt eine Rolle spielen?
 

muckelzwerg

Bekanntes Mitglied
Unter Windows gibt es doch ein paar Hausmittel, um den Speicherverbrauch von Prozessen anzuzeigen. Und da finden sich auch sicher ein paar bessere Tools, um einen Prozess zu überwachen.

Wenn ich das richtig verstehe hast Du das Javaprogramm geschrieben und verwendest darin ein C++ Programm als Blackbox.

Kannst Du wirklich sicher sein, dass in Österreich auch WIRKLICH 1.6 verwendet wurde? Du weißt doch wies läuft. Hundertmal "ja, ganz sicher" und dann "oh nee, warte mal ...".
Das sind große Sprünge auf solche Infos würde ich nicht bauen wollen.
Du musst erstmal irgendwelche weiteren Unterschiede finden. Wieviel Speicher verbraucht das CProg mit 1.4, wieviel mit 1.6? etc.
 

Wurm

Mitglied
Kannst du mir zufällig auch ein paar gute dieser Tools zur Speicherüberwachung empfehlen?
Am Besten welche, die auch von wirklichen Dummies verwendet werden können.
 

Wurm

Mitglied
32-Bit überall.

Kann ich den JProfiler auch verwenden, wenn ich kein Eclipse laufen habe?
Dort wo die Probleme auftreten ist das nämlich der Fall und auf den Rechner darf ich auch keins installieren.
 

Wildcard

Top Contributor
Erstmal musst du klären ob der C Code oder das Java Programm den Speicher braucht. Lässt sich mit Boardmitteln auch über den Windows Task Manager herausfinden.
Falls das Java Programm die Ursache ist zieh dir einen Heap Dumb mit der Visual VM (ist im JDK dabei) und analysiere ihn wahlweise direkt in der Visual VM, oder (wenn der Fehler in Visual VM nicht direkt ersichtlich ist) mit Eclipse MAT.
 

Ähnliche Java Themen

Neue Themen


Oben