PDA

View Full Version : [JAVA]Come pulire la memori utilizzata da java


silviaz80
18-04-2006, 10:34
Ciao,
sto facendo un programma che mi legge grandi quanntità di dati da file e li deve visualizzare su una textArea, ma ho il problema che fa un utilizzo eccessivo d memoria e quindi non mi permette di aprire contemporaneamnte tutti i file di cui ho bisogno. La cosa strana è che se apro questi file (sono sia testuali che xml) a uno a uno me li apre anche se poi arrivato ad un certo punto va in outOFmemory, ma se faccio la selezione multipla dal JFileChooser va in outOfMemory molto prima e non mi apre niente.
Sapere di qualche metodo che pulisce la memoria o comunque qualcosa che mi limiti l'utilizzo di essa
Ciao
Silvia

kingv
18-04-2006, 11:00
puoi chiamare espressamente il garbage collector (guarda i metodo dalla classe System) ma non penso risolveresti nulla.
probabilmente il tuo problema è dovuto all'utilizzo che fai di questi file, se cerchi di leggerli tutti e portarli in memoria inevitabilmente arriverai a esaurire lo heap, prova a pensare a una strategia di buffering.
se invece il comportamento del tuo programma è voluto potresti aumentare la dimensione massima dello heap con il parametro -Xmx passato all'interprete java.
sul jdk 1.4 il default per il massimo era 64 mega, con l'1.5 è aumentata a 1/4 della memoria fisica della macchina su cui è in esecuzione la jvm.

silviaz80
18-04-2006, 13:12
puoi chiamare espressamente il garbage collector (guarda i metodo dalla classe System) ma non penso risolveresti nulla.
probabilmente il tuo problema è dovuto all'utilizzo che fai di questi file, se cerchi di leggerli tutti e portarli in memoria inevitabilmente arriverai a esaurire lo heap, prova a pensare a una strategia di buffering.
se invece il comportamento del tuo programma è voluto potresti aumentare la dimensione massima dello heap con il parametro -Xmx passato all'interprete java.
sul jdk 1.4 il default per il massimo era 64 mega, con l'1.5 è aumentata a 1/4 della memoria fisica della macchina su cui è in esecuzione la jvm.

Ok, grazie mille adesso provo :-)
Ciao
Silvia