Petr Zajíc wrote:
Potřebuji poradit (podotýkám, to je začátečnický dotaz, s Javou si hraju
pár neděl...)
V mojí Swing aplikaci mám třídu, která rozšiřuje JPanel. V určitém
okamžiku nahrávám instanci této třídy a umisťuju ji do nějakého
containeru. Ta moje třída má na panelu ještě celou řadu hejblat, pár
čudlíků a jednu JTable. Ve finále se může jednat o dost velkého žrouta
systémových prostředků.
Zatím jsem nepřišel na to, jak celou tuto instanci dostat z paměti, když
ji nepotřebuji. Scénář je ten, že na panelu je tlačítko, které když
zmáčknu, tak potřebuji, aby celý panel zmizel do věčných lovišť, zmizel
i z kontejneru a uvolnil místo soudruhům, kteří přijdou po něm.
Stávající kód:
public void actionPerformed(ActionEvent e) {
if (e.getSource()==cmdOk){
this.setVisible(false);
container.remove(this);
container.revalidate();
}
Nevím, ale zdá se mi, že tohle sice moji instanci skryje, ale zůstane i
nadále v paměti. Takže mám otázku:
Jak to provést (něco jako this=null (špatná syntaxe) nebo dispose(),
jenže tuto metodu JPanel nemá...)
Předem díky za tipy,
Petr Zajíc
Nesmi ti tam zustat zadne reference a gc si s tim uz poradi. Podotykam,
ze reference muze zustat i pres model. Projed si tu aplikaci nejakym
profilerem a pak pochopis, co java s pameti vlastne dela.
dispose() ani nic jinyho volat nemuzes.
Petr Michalek