Byl bych v těch tvrzení trochu opatrnější, co třeba takové: Thread th = new Thread(new SomeRunnable()); th.start(); th = null; //timhle bych vlakno rozhodne zastavit nechtel
On je rozdil v tom, nastavit pointer na null a vykonat na objektu nejakou operaci (třeba to finalize). Jiri Holy -----Original Message----- From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On Behalf Of Ondra Medek Sent: Tuesday, January 26, 2010 4:43 PM To: Java Subject: Re: Swing a uvolnovani Window 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