Newsgroup: it.comp.java
Titolo: deallocare oggetti

Vorrei creare un metodo per un oggetto che una volta chiamato 
sull'oggetto stesso lo deallochi completamente, o meglio lo "distrugga", 
e non semplicemente lo renda invisibile (come ad esempio un bottone).
Mi spiego meglio: vorrei avere all'interno di una definizione di classe 
un metodo privato che "distrugga" l'oggetto corrente, come ad esempio un 
metodo invocato sul riferimento this.
E' possibile questa cosa in Java?
Grazie e spero di essere stato chiaro.
Marco

 Grazie e spero di essere stato chiaro.
Non č possibile. La deallocazione/distruzione delle istanze č ad 
esclusivo appannaggio del sistema, che si preoccupa di farlo quando 
l'istanza non č piů referenziata. Oltretutto in java si raccomanda 
sempre di non considerare la distruzione dell'oggetto un evento "certo".

Vincent Vega ha scritto:

In effetti se non erro se ne occupa direttamente il Garbage Collector,
anche se non escludo la possibilita' di "forzare" il garbage collector
a far pulizia...
ma forse ho detto una c@zz@t@ :)
Nor


E' il garbage collector ad occuparsi della deallocazione della memoria,
l'unica cosa che puoi fare e' chiamare
System.gc() che esegue il garbage collector (guardati la doc)
ma se non hai esigenze molto particolari non ne vedo il motivo per 
utilizzarlo

 sempre di non considerare la distruzione dell'oggetto un evento "certo".
dunque il mio progetto e' nato male in partenza :-( perche' non ha 
previsto questa "defaillance" del Java ....
... eppure ci deve essere un modo .... qualcuno di voi conosce la classe 
Reference? Forse puo' essermi di aiuto?
Grazie ancora
Marco

 previsto questa "defaillance" del Java ....
che io sappia piu' che una "defaillance" di java e' uno dei suoi
punti di forza: il programmatore non deve sbattersi a deallocare
gli oggetti quando non servono xche' c'e' gia' un'entita'
(il garbage collector) che se ne occupa. Insomma, lavoro in meno
per noi programmatori :D
Visto che xo' non sono sicurissimo del funzionamento del tutto
(e di quello che devi farci tu) ti consiglio di dare un occhiata
al libro di Bruce Eckel Thinking in Java (scaricabile gratuitamente
da 
http://www.mindview.net/Books/TIJ/
)
ciao,
Norberto

 Reference? Forse puo' essermi di aiuto?
c'entra nulla.

 Marco
Deallocarla direttamente non si puň. Ora, non vorrei dire una boiata, ma
dovresti poter fare una cosa del genere:
miaClasse = null;
System.sc();
In questo modo elimini il riferimento alla classe miaClasse, poi forzi il
garbage collector a ripulire la memoria. In teoria, vedendo che non c'č
piů nessun riferimento che punta alla classe, dovrebbe liberare la
relativa memoria. Avevo perň letto di un caso in cui un oggetto puň vivere
in eterno all'interno della jvm:
http://www.jugtorino.it/newwiki/jsp/Wiki?CuriositaSulLinguaggioJava
cercate nel testo "I want to live forever!"
Saluti
Raffaele
-- 
Raffaele Castagno
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Marco wrote:

esiste il metodo finalize() di Object.. ma viene normalmente chiamato
solo dalla JVM.. in quanto java ha un sistema di garbage collection.
Non capisco la tua esigenza.. Java non e' C o C++.. in java non hai
bisogno di chiamare una funzione per liberare le risorse.. Se ne
occupa il sistema di GC. Quando la JVM determina che non vi sono
piu' riferimenti ad un oggetto, allora questo oggetto viene distrutto,
e la memoria da esso occupata viene quindi liberata e resa nuovamente
disponibile.
Se invece ti riferisci in modo particolare agli elementi grafici,
dispose() di Window (e le sue sottoclassi come Dialog o Frame)
libera le relative risorse.
-- 
                Roberto Nunnari -software engineer-
                     mailto:
ro...@nunnisoft.ch
   Residenza Boschetto 12           tel/fax: 
+41-91-6046511
   6935 Bosco Luganese        """    mobile: 
+41-76-3208561
   Switzerland               (o o)
========================oOO==(_)==OOo========================