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
>

Odpovedet emailem