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

Odpovedet emailem