Image einem bestimmten Button zuordnen
-
das OutOfMemory Problem kannst du umgehen indem du dir mehr speicher beim prg-aufruf besorgst
-Xmsn Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 2MB. Examples: -Xms6291456 -Xms6144k -Xms6m -Xmxn Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 64MB. Examples: -Xmx83886080 -Xmx81920k -Xmx80m
(wobei es natürlich besser ist 'sparsam' zu implementieren)
gruß
d
-
-
djoxo schrieb:
das OutOfMemory Problem kannst du umgehen indem du dir mehr speicher beim prg-aufruf besorgst
(wobei es natürlich besser ist 'sparsam' zu implementieren)ja genau, mit der Speicherbesorgung sind die Probleme sicher nicht gelöst... Schlimm wirds, wenn es sparsamer nimmer geht.
gruss
kati
-
Kati schrieb:
... ich muss auch sagen, dass ich ein bisschen enttäuscht bin. Swing finde ich vom Konzept her super ( leicht erweiterbar etc., Anwendungen lassen sich schnell entwickeln), ABER: Performanz ist ziemlich heavy. Bei der Bearbeitung großer Datenmengen zeigt sich, wie lahm Java manchmal ist. Z.B. bei 600 Einträgen in einem JTreeView (und das ist eigentlich gar nicht viel!) ist es schon langsam, wenn ich schnell scrollen will. Geschweige, wenn man mit vielen Komponenten interaktiv arbeitet - also das Event Handling. Außerdem Speicherbedarf: ich habe mal versucht, das java.lang.OutOfMemoryError-Problem über expliziten gc() Aufruf zu lösen. Es hat einige Minuten gedauert, bis es aufgeräumt war. Geht es nur mir so?
Ich glaube, es gibt ein paar Komponenten in Swing, die man sehr schnell so benutzen kann, wie es nicht gedacht ist. Diese Komponenten bestrafen das dann auch ganz schnell mit einer miserablen Performance. Dazu gehören sicherlich der JTree und die JTable. Ich kenne mich mit diesen Komponenten leider auch nicht aus, da ich mich noch nicht intensiver mit denen auseinandersetzen mußte. Man hört aber in verschiedenen Foren immer wieder, dass es da Performance-Probleme gibt. Die Lösung ist meistens eine andere Nutzung der Komponente. Oft werden z.B. unnötigerweise sehr viele Objekte bei der Nutzung so einer Komponente genutzt. Die Kosten natürlich Speicherplatz und bremsen das ganze Programm aus.
Mein Tipp: Schau dir mal die Beispielanwendungen an, die es von Sun zu Swing gibt. In den Sun-Tutorials wird sicherlich auch etwas zur richtigen Nutzung dieser Komponenten drinstehen.
-
hi gregor,
ja, du hast natürlich recht. Ich schaue mir jedoch fast immer die beispielanwendungen aus der api-doku an. Ich halte mich auch an die Prinzipen so weit nur möglich... also was das JTree-Problem angeht: ich möchte eine Datenstruktur graphisch darstellen. Diese kann aus vielen Elementen bestehen und jedes dieser Elemente kann eine konstante Anzahl der Kinder haben, die wiederum sehr viele Kinder haben können. Um diese Datenstruktur graphisch darstellen zu können, habe ich JTree verwendet, weil es sich hierbei eben um eine baumartige Datenstruktur (Objekte die auf andere Objekte verweisen) handelt. Naja, und da ich JTree eben mit vielen Daten fülle, verhält sich die Anwendung auch dementsprechend. Was für eine Komponente soll ich statt JTree verwenden (Bedingung: es muss möglich sein, die Kinder anzuklicken, da gleichzeitig DB-Zugriff erfolgt --> Event Handling; d.h. JTextArea oder ähnliches käme nicht in Frage).
lg kati
-
Wie komplex sind die Objekte, die du als Knoten bzw. Blätter ablegst? Ein einfacher String könnte ich mir vorstellen würde weniger verbraten ...
-
hi,
hier sind 2 screenshots:
http://www.wu-wien.ac.at/usr/h99d/h9953043/Bilder/visual.gif
http://www.wu-wien.ac.at/usr/h99d/h9953043/Bilder/datastr.gifDas erste veranschaulicht eine Vektorkarte. Jedes der Polygone kann aus mehreren Tausend Punkten bestehen. Dies kann man vor allem am zweiten Screenshot erkennen. Von Bedeutung sind hierbei vor allem die Knoten "GeoPoint X". In diesem Fall machen den ersten Datensatz 1486 Punkte aus (0-1485). Die anderen Knoten sind eigentlich harmlos (also klein: 1-4 Knotenkinder, wobei jeder dieser Knoten noch ein Blatt hat). Insgesamt ist es eine ziemlich große Menge an Knoten und Blättern . Was für eine Komponente sollte ich dafür besser verwenden?
lg
kati
-
Die Komponente an sich ist schon korrekt gewählt nur würde ich die Organisation etwas anders machen. Von diesen Geo-X-Daten benötigst du wahrscheinlich nicht alle gleichzeitig. Zumindest könnte man den Umfang etwas eingrenzen. Was ich damit sagen will ist, dass man evtl. durch ein ausgereiftes Befüllen des Trees on-demand viel mehr rausholen kann als wie wenn man alle Daten sofort in den Speicher holt. Immer nur die Daten in den Speicher lesen, die man auch tatsächlich benötigt. Beispielsweise bei der Expandierung eines Knotens einlesen etc. Ich denke damit kommt man weiter und ist aus Sicht der Performance besser.
-
ja, das wäre eine Alternative. D.h. erst wenn der Knoten "record..." angeklickt wird, sollen die Daten per "random access" aus der Datei rausgeholt werden. Was mir aber aufgefallen ist: wenn auf der Ebene 1 (also ohne root) viele Knoten sind, ist es eigentlich wurst, ob diese noch Kinder haben, oder ? Es ist trotzdem lahm, wenn man scrollt.
lg kati
-
Na ja die angesprochene Alternative ist nur als Speicherentlastung gedacht. Dass beim Scrollen Probleme auftreten mag tatsächlich ein Problem der Swing-API sein.