Newsgroup: it.comp.java
Titolo: Distruzione degli oggetti

Ciao a tutti!
Averi bisogno di una mano con un programmino, dovrei migliorare le sue
performance.
Questo programmino quando lavora genera una miriade di oggetti, (tutti
necessari per fare il suo dovere)...
il problemino è che dovendolo eseguire su una macchina un pò datata
che monta windows e altre applicazioni che occupano montagne di
risorse, sono a corto di RAM.
mi servirebbe sapere se esiste un modo per eliminare fisicamente un
oggetto che non serve +. questo mi serve per alleggerire il lavoro del
GarbageCollector e soprattutto avere sempre una quantità decente di
memoria disponibile, in modo da non utilizzare la mem virtuale...
detto in soldoni avrei bisogno di un qualcosa stile "finalize" di
C/C++, una specie di "distruttore"...
Sapete dirmi se è possibile e se si comeposso fare???
Grazie mille a tutti!
Seiya

 Seiya
ciao Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

> dovere)...
Sono possibili politiche di riciclo ?
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

Le informazioni che dai sono insufficienti per capire dove e come agire.
Pool di oggetti riutilizzabili potrebbero aiutare?

 oggetto che non serve +. 
Tutto quello che puoi fare è accertarti che non rimangano references 
statiche agli oggetti, per il resto ci pensa la gestione automatica a 
*candidare* per il gc gli oggetti che non ti servono più.
In questi casi si può pensare ad un pool di oggetti riusabili.

 Sono possibili politiche di riciclo ?
e' una strada percorribile


> Sono possibili politiche di riciclo ?
nn> e' una strada percorribile
Ed una soluzione intelligente :>
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software
P.S. Oggi sono particolarmente acidello :>

 distrutto dal garbage
Mi inserisco nella discussione per porre a mia volta una domanda: e le 
variabili associate ad un Frame (o ad una classe che estende Frame) 
quando vengono tolte dalla memoria?
Supponiamo di avere
  {
   frame f=new frame();
//ecc....
   f.removeAll();
   f.setVisible(false);
  }
All'uscita dal ciclo, quando la variabile f non esiste più, il Frame non 
è più visibile e gli scoltatori sono stati rimossi, il Frame occupa 
ancora memoria? Avevo avuto l'impressione di sì...

il mio problema è che ho già tentato il riciclaggio degli oggetti!
non ottengo dei benefici consistenti, cioè, tanto per fare un esempio,
recupero dal 2 al 3% della memoria...
Un'altra cosa, Io non ho mai fatto C/C++; infatti ho pensato prima di
fare Java per farmi le ossa e poi passare a uno di  questi... in modo
da avere un impatto con tutta quella potenza più morbido e meno
tragico.
Quali altre informazioni servirebbero per darmi una mano???
Comunque grazie mille!
Seiya

 Quali altre informazioni servirebbero per darmi una mano???
Ad esempio come tratti i tuoi oggetti, di che tipo (lavori con POJO, o 
stai tentando di caricare in memoria 1GB di file mp3?), etc...
Ciao,
jRed

 ancora memoria? Avevo avuto l'impressione di sì...
La tua impressione è dovuta la fatto, che il GC non entra in funzione 
appena una variabile non è referenziata...ma ha una logica ben precisa!
Il più delle volte, nelle piccole esecuzioni, se lanci la JVM con tanta 
memoria già allocata, il GC non libera "di corsa" la memoria poichè ne 
ha tanta altra libera...
Ciao,
jRed

 ancora memoria? Avevo avuto l'impressione di sì...
La VM tiene il conto delle reference che puntano ad un oggetto. Quando 
l'oggetto viene assegnato ad una reference il conteggio viene 
incrementato, quando la reference esce dal suo scope viene decrementato. 
Nel momento in cui il contatore va a zero, l'oggetto viene candidato per 
il garbage collect. Ciò non significa che l'oggetto venga distrutto 
subito, o fra cinque minuti o fra un'ora: significa che l'istanza non è 
più disponibile per il programma, sicuramente verrà distrutta ma non 
puoi sapere quando perchè l'algoritmo del gc non è definito nelle 
specifiche java.

 ancora memoria? Avevo avuto l'impressione di sě...
ma si puo' sapere perche' non usi il .dispose() quando elimini un frame?
e' fatto apposta.
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 e' fatto apposta.
Perchč non conoscevo l'istruzione... grazie mille del consiglio!

 wrote:

ehh API queste sconosciute...
