Hallo,
Frage: Warum fressen viele Java Apps die ich ausprobiert hab so viel Speicher?
Nehmen wir zB mal Poseidon for UML. Das geht ohne Probleme locker auf über 150 MB hoch.
Dann hängt es öfter und während dessen klettert der Speicher ins unermessliche...
Ist das nun immer so bei grafischen Java-Anwendungen? Oder haben die Coder einfach unsauber gearbeitet?
Das Poseidon for UML viel Speicher braucht kann ich bestaetigen (bei mir sinds auch
so um die 130-150 MB).
Poseidon verwendet intern zur Verwaltung der UML Modelle ein MDR
(Meta Data Repository), weiterhin sind noch verschiedene XML Parser aktiv, usw.
Ich denke das, was da am meisten Speicher verbraet ist das die interne Modell-
Repraesentaton und das XML Erzeugung/Parsing fuer die staendigige
Synchronisierung des Modells mit der grafischen Representation. Das hat nicht
so viel mit der grafischen Praesentation an sich zu tun...
Aber ich denke das ist ein generelles Problem von UML Tools. Andere Tools
wie Magic Draw, Rational Rose, Visio mit Plugins etc. kommen da auch nicht besser weg...
Und warum reagieren die gestylten Java-Apps generell manchmal gar net mehr? Ist das bei euch auch so?
Das liegt unter anderem daran dass man durch "ungeschickte" Programmierung,
langlaufende Tasks im selben (Event Dispatch Thread: EDT)Thread ausfuehrt die fuer das Zeichnen der GUI und das
Eventhandling zustaendig ist. Richtig gemacht (langlaufende Tasks in einem eigenen Thread,
Veraenderungen an der GUI die aus Berechnungen des Tasks bestehen werden wieder im EDT ausgefuehrt:
Beispielsweise ueber EventQueue.invokeLater(new Runnable(){ public void run(){....}});
Wenn man das richtig macht reagiert die Anwendung auch entsprechend.
Es kann jedoch auch sein, dass das Betriebssystem an der Blokierung der GUI schuld ist.
Insbesondere dann wenn die Anwendung minimiert wurde und (Windows) beginnt nicht mehr benoetigte Teile der Anwendung
vom Arbeitsspeicher auf die Platte auszulagern (Swapping). Holt man die Anwendung wieder
in den Vordergrund kann es nunmal wieder eine Weile dauern bis die entsprechenden Teile der
Awendung wieder im Speicher liegen.
Könnt ihr mir ein Java-Programm zeigen was richtig aufwendig gezeichnet,
aber wenig speicher verbraucht? Nur mal so interesse halber.
Im Moment faellt mir keine ein... aber ich bin einfach nicht in dieser Domaene zuhause.
Vielleicht ist hier was bei:
http://www.netbeans.org/products/platform/screenshots.html
Gruss Tom