Announcement

Collapse
No announcement yet.

Speichermanagement der JVM

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speichermanagement der JVM

    Hallo Javafreaks ;-)

    Ich arbeite an einem größeren Softwareprojekt (Javaprogrammierung unter Linux) mit.
    Problem: Ich hab eine Klasse geschrieben, die von Frame abgeleitet ist und eine Art Browser darstellt. Ein Textarea wird für die Anzeige von Texten benutzt. Wenn ich vom "Hauptprogramm" die Methode "zeigeKindFenster" aufrufe wird eine neue Instanz dieser "Browser-Klasse" erzeugt und der Text wird im Textarea dargestellt. Mit dem Linux-Befehl "top" kann ich sehen wie Speicher von der JVM angefordert wird. Für eine 1MB große Textdatei saugt sich die JVM ca. 10MB Speicher. Wenn ich den Browser schließe, benutze ich die Methode "dispose". Das Fenster verschwindet. Vorher habe ich den Text des Textarea auf null gesetzt.
    Anschließend benutze ich das Browser-Objekt ein zweites mal, um einen anderen Text ca. gleicher Größe zu laden und anzuzeigen. Die JVM will sich wieder Speicher saugen und ich bekomme den zweiten Text nicht geladen sondern die Meldung: out of Memory vom Textarea.

    Was mir noch aufgefallen ist: Jedes Event erzeugt ein neues Objekt, das ca. 40 KB Speicher verbraucht. Wenn man nun einige Zeit mit unserem Programm gearbeitet hat, ist der von der JVM verbrauchte Speicher auf das Doppelte gewachsen. Werden nicht mehr gebrauchte Objekte nicht vom gc eingesammelt? Dieses passiert auch, wenn ich Objekte explizit auf null setze.

    Hab ich da einen logischen Fehler oder liegt es an der JVM?

    PS: Wir arbeiten mit Java 1.1.7 für Suse-Linux 6.2

  • #2
    In "Java Speichermanagement fragwürdig" hab ich meinen Kommentar dazu geschrieben.<br>
    Klingt leider nicht berauschend und ist auch nicht so gemeint..

    Comment

    Working...
    X