Ahoj,

narazil jsem na divne chovani Swingu (AWT). Kdyz zmizim JFrame pomoci
setVisible(false), tak v pameti zustane viset pres nejaky seznam
java.awt.Window.allWindows. Tedy memory leak. Musim volat
JFrame.dispose(). Stejne u JDialog. Vzhledem k tomu, ze default close
operation u JDialog je HIDE_ON_CLOSE, pak vsechen kod typu

MyDialog().setVisible(true);

je memory leak, musim delat

JDialog d = MyDialog().setVisible(true);
d.dispose();

anebo nastavit v MyDialog() construktoru
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

Tak nevim, je to Java (SUN JRE 1.6) bug? Pokud je to ocekavane
chovani, proc neni java.awt.Window.finalize(), ktera by po sobe
uklidila? Koukam, ze v Java 5 jeste tato metoda je vyuzita, viz:

http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Window.html#finalize%28%29

ale v Java 6 chybi.

Dik
Ondra Medek

Reply via email to