Swing a uvolnovani Window
Ondra Medek
xmedeko na gmail.com
Úterý Leden 26 15:39:51 CET 2010
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
Další informace o konferenci Konference