Tool Java Applikation beschleunigen ges

Hallo
ich bin im Moment etwas verzweifelt, weil wir als Dienstleister in eine Java-Applikation Daten einpflegen müssen.
Auf das Programm haben wir leider keinen Einfluss!!!

Aber es scheint irgenwie sch… programmiert zu sein.
Jedenfalls frisst es ja ohnehin alle Ressourcen des Rechners beim Start.
Aber was mein Problem ist, Vorgänge wie Speichern oder aktualisieren von Graphiken dauern mitunter 15-30sec. Da ich alle 2min diese Funktion benötige, geht der halbe Tag mit warten drauf.

Daher meine Frage, gibt es Möglichkeiten von aussen am PC diese Applikation zu optimieren, durch ein Tool, Einstellungen oder was weiss ich.

Ich sitze hier schon vor unserem schnellsten Rechner
(AMD Athlon 64 3700+) und trotzdem dauerds ewig.

Wäre für schnelle Hilfe oder ein Tool dankbar.

Mfg Werner

Du könntest dir anschauen welchen Speicher der Applikation zugeordnet ist. Eventuell ist ein Full-GC der bei solchen Aktionen immer aufgerufen wird für die schlechte Performance zuständig. Die Frage ist jetzt mit welchen Startparametern die Applikation läuft?!
Aus der Hüfte geschossen könnte ich dir vllt nur empfehlen mehr Speicher zuweisen und vllt mit einem anderen Garbage Collector versuchen wie z.B. ParallelGC
Was du noch versuchen könntest wäre die JConsole (ab SDK5 defaultmäßig dabei) mitlaufen zu lassen um herauszufinden wo die Performance verbraucht wird. Frage ist auch ob vllt viel auf die Festplatte bzw. ins Netzwerk geschrieben und gelesen wird, vllt könnte man diese Vorgänge auch beschleunigen.

So… mehr kann ich dir ohne weitere Informationen nicht sagen, ist halt leider sehr schwer für eine Applikation die man nicht kennt und wo man nicht weiß was diese tut.

LG Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

weitere Informationen benötigt
Hallo
ich verstehe leider sehr wenig, von dem was du da schreibst, was soll ich denn nun konkret tun und vor allem wo und wie soll ich was tun???

Mfg Werner

bitte melden
Hi
ich bleib dran und warte auf konkrete Infos.
Würde mich freuen, wenn wir das gemeinsam lösen könnten.

Mfg Werner

Hallo

Die Frage ist erstmal, wie wird die Applikation gestartet?
Wenn es über ein BAT-Datei ist, stehen in dieser beim Aufruf (gleich nach dem befehl java oder javaw) einige Parameter, unter anderem auch ein -Xms und -Xmx die angeben wieviel speicher die Applikation zur Verfügung hat.

Wenn man den Parameter
-Dcom.sun.management.jmxremote
bzw. musst du vllt auch noch ein Port angeben

-Dcom.sun.management.jmxremote.port=6666 (Remote Port)
-Dcom.sun.management.jmxremote.ssl=false (keine ssl verschlüsselung)
-Dcom.sun.management.jmxremote.authenticate=false (keine Passwortabfrage)

hinzufügt, aktiviert man die JConsole. Die passende Anwendung zum überwachen der Anwendung findest du im bin-Verzeichnis deiner JAVA-Installation (Vorausgesetzt du verwendest Java5). Dort kannst du dir anschauen ob die Applikation viele Threads hat, oder viel Speicher verwendet und wieder freigibt und was er in dem moment wo du speicherst passiert.
Dazu vllt zwei Links:
http://java.sun.com/j2se/1.5.0/docs/guide/management…
http://www.zdnet.de/builder/program/0,39023551,39134…

Ein GarbageCollector ist ein Dienst, der den Speicher wieder aufräumt und Objekte die nicht mehr benötigt werden löscht.
Der normale GC stoppt die Anwendung während er den Speicher aufräumt. Der ParallelGC stoppt diese nicht, braucht dafür ein bisschen länger aber man merkt ihn beim arbeiten weniger. Diesen GC kann man mit dem Parameter -XX:+UseParallelGC aktivieren.

Damit ich genaueres sagen/raten kann, müsstest du schon mehr spezifizieren. Wie wird das Programm gestartet? Welche Java Version wird benutzt? Wie viel Speicher wird verwendet?
Sonst wird dir hier leider keiner weiterhelfen können und du musst dich entweder damit abfinden oder du kontaktierst den Hersteller

LG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Infos
Hallo
ich schick dir gleich mal ein Bild mit den Infos, welche das Programm bei Aufruf Systeminformationen anzeigt.

Das Programm wird normalerweise über die Datei IHLStartmenu.jar gestartet, dann geht ein Menü auf und ich starte dann die Anwendung Seilstatik (hierzu gibt es auch eine Datei IHLSeilstatik.jar), welche dann automatisch gestartet wird.

Anstatt über die Jar-Datei das Hauptmenü aufzurufen kann ich auch über die Datei IHLStartmenü.cmd starten (ist so eine Art Dos-Fenster).

In der Datei steht folgendes drin:
java -Djava.library.path=. -jar IHLStartmenu.jar

Soweit der Anfang, Datei schicke ich gleich, dann bist du wieder dran.

Mfg Werner

Mal so einen Schuss ins leere versuchen :smile:
mach mal aus der einen Zeile in IHLStartmenü.cmd

java -Xmx256M -Djava.library.path=. -jar IHLStartmenu.jar

und schau ob sich das auf die Performance auswirkt.
Ansonsten könntest du es noch mit

java -Xmx256M -XX:+UseParallelGC -Djava.library.path=. -jar IHLStartmenu.jar

versuchen

LG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Bild ging nicht
Hallo
die Email an deine Adresse kam zurück mit Fehlermeldung!

Infos
Hallo
mit den Befehlen startet das Hauptmenü schneller, definitiv.
Die Anwendung die ich danach aufrufe, ist leider aber immer noch genauso langsam.

Mfg Werner

Infos2
die Datei Seilstatik.jar kann ich ausser vom Hauptmenü nicht starten.
Hab Sie mal angeklickt, dann kommt die Meldung:

Java Virtual Machine Launcher:
Failed to Load Main-Class manifest attriubute from ihlSeilstatik.jar

hmm… schau mal im Taskmanager (STRG+ALT+ENTF drücke) wieviele java.exe bzw. javaw.exe du vor und nach dem starten dieser Anwendung laufen. Die Frage ist ob es nach dem starten eine mehr geworden ist

LG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Info
Jede der beiden Anwendungen führt zu einem Prozess Javaw.exe (1x20k, 1x 91k), steht also 2x drin.

Mfg Werner

Das Problem ist, du hast jetzt eine JVM optimiert, nur leider wird im Programm eine weitere gestarted ohne unsere Optimierungen :frowning:
Ein Schuss ins leere (könnte aber klappen)
Leg im gleichen Verzeichnis wie die .cmd datei eine java.bat mit dem Inhalt

java.exe -Xmx256M -XX:+UseParallelGC %1 %2 %3 %4 %5 %6 %7 %8 %9 

und eine javaw.bat mit dem Inhalt

javaw.exe -Xmx256M -XX:+UseParallelGC %1 %2 %3 %4 %5 %6 %7 %8 %9 

an.

Jede der beiden Anwendungen führt zu einem Prozess Javaw.exe
(1x20k, 1x 91k), steht also 2x drin.

Mfg Werner

Info
Hi
mit welcher Datei soll ich dann starten???
Ich habe die normale CMD-Datei ohne die Veränderung deines Eintrags benutzt.

Die CMD_Datei wird dann aber nicht mehr ausgeführt und das Programm startet nicht.
Man siehts nur sehr kurz, aber im DOS-Fenster steht nach dem 2.Befehl irgendetwas von Exception in Thread java.lang.Noclass und irgendwas mit Error.

Über die Jar-Dateien kann ich aber noch starten!

Mfg Werner

Info2
Hi,
ich habe die Bat_Dateien nach dem Start über die Jar-Dateien angeklickt.
Irgendwie habe ich das Gefühl, das es jetzt dennoch etwas schneller geht.

Kann das sein???

Wir kriegen das hin, ich gleub fest dran.

Mfg Werner

Hi,
also die Befehle wie schieben und drehen gehen definitiv schneller.
Problem bleibt aber beim Speichern, da steht das CPU-Symbol immer noch auf 100% Auslastung.

Mfg Werner

Kann sein das es schneller geht, muss aber nicht. Das darfst du mich leider nicht fragen, dass musst du schon selbst bestimmen :wink:

Die Bat-Dateien brauchst du nicht anklicken, da wird nur kurz ein DOS-Fenster aufgehen und nix weiter passieren. Aber am besten die BAT-Datei weg tun, schauen/messen wie schnell es geht und dann das gleiche nochmal mit BAT-Dateien und vergleichen ob es was gebracht hat :wink:

LG

Antwort
Hallo
du meinst also, ich soll die CMD-Datei anklicken, dann werden die beiden BAT-Dateien ausgeführt, aber es wird ein Fehler erzeugt.

Und dann muß ich die Anwendung über die Jar-Dateien starten und dann gings schneller??? Weil ich muß ja jetzt über die Jar-Datei starten!!

Bleibt noch das Problem mit dem Speichern, was kann man da optimieren??? Warum geht der Rechner immer auf 100%, sind Java-Anwenungen so CPU-Killer.

Mfg Werner

PS: ich geh um 16Uhr ca. nach Hause, bin aber morgen ab 8Uhr wieder da,
dann könnten wir noch etwas rumtesten.

Du kannst versuchen den Parameter -Xmx256M auf -Xmx512M zu ändern, aber ich glaub nicht das dies viel bringt.
Die Frage ist jetzt,
was wird da genau gespeichert?
wo wird das gespeichert? Auf der Festplatte? einer Datenbank?
Leider bräuchte man um CPU Performance zu verbessern in der Regel einen einblick in den Source und zu 97% sind dafür auch Programmänderungen notwendig :frowning:

LG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Letztes Mail für Heut
Hallo
ich muß gleich los, bin aber wie gesagt morgen ab 8Uhr wieder da.

Gespeichert werden Linien Punkte, in Form von Graphiken und Koordinaten.
Dabei werden wohl auch Berechnungen aktualisiert (für Abstandsnachweise usw.). Das ganze läuft über ein XML-File.

Dh. mit dem Programm wird eine graphische Oberfläche erzeugt, wir geben da alle Daten ein und diese werden direkt nur!!! in einer XML-Datei abgelegt.

Ich denke, das mit der Speicherauslastung hat evtl. damit zu tun, das die XML-Struktur sehr aufwendig ist und natürlich jede Änderung eine Neuberechnung anderer Elemente bewirken kann.

Ob ich auf dem Server oder lokal arbeite, da habe ich bisher noch keinen Unterschied bemerkt.

Denk mal nach, vielleicht fällt dir nochwas schlaues ein.
Bis morgen dann und erstmal besten Dank, MFG Werner