Hmm, tak to soudruzi v Sunu zase neco vydumali. Kdyz udelam

window.setVisible(false);
window = null;

Tak objekt v pameti furt visi. To nepovazuji za stastne reseni. Priste
abych u kazde tridy louskal manual, jestli nahodou nema specialni
metodu, kterou musim volat, nez objekt prestanu pouzivat. Co kdyby
neco podobneho bylo treba u kazde JComponent? To bychom se z toho asi
pos****.


2010/1/26 Filip Jirsák <filip.jir...@gmail.com>:
> 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
>
>



-- 
Ondra Medek

Odpovedet emailem