Zdravím, setVisible(false) okno nezavírá, ale pouze skryje. Pokud chcete okno zavřít, použijte dispose() – přesně jak píšete. Memory leak to je, ale ne na straně Swingu, ale na straně programátora, který okno skrývá když jej ve skutečnosti chce zavřít…
S pozdravem Filip Jirsák Dne 26. ledna 2010 15:39 Ondra Medek <xmed...@gmail.com> napsal(a): > 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 >