|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
[Java] java.lang.OutOfMemoryError
Ciao a tutti,
sto scrivendo un programmino java.. l'ho testato con piccoli dataset (100kb)e mi funziona bene. Task manager dice che sono allocati 65 mega di memoria. In questo caso: il programma funziona correttamente, mi crea il file dei risultati e me lo visualizza. Poi provo con un dataset di (2,6mega), task manager mi dice che sono allocati 75 mega. In quest'altro caso invece il programma crea correttamente il file dei risultati ma non me lo visualizza nella textarea apposita. JBuilderX mi da il seguente errore: java.lang.OutOfMemoryError A questo punto credo devo riordinare il programma, stando attento a mettere a null gli oggetti che non mi servono più al termine di ogni operazione. Voi che ne dite? E' una questione di ordine o è una questione insormontabile di dataset troppo grandi? Thnks! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
probabilmente la seconda.
prova ad aumentare la dimensione massima dello heap, settandolo a metà della memoria fisica che hai sulla macchina. Se hai 512 mega: java -Xmx256m nome_classe_col_main |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
che intendi per dataset? e che ci fai? impostare i valori a null può servire ma non è detto che sia questo il problema, se un problema c'è, perchè potrebbe trattarsi effettivamente di struttura dati molto ingombrante e non puoi fare nulla per ridurla, quindi puoi solo aumentare la memoria a disposizione della jvm come ti è stato indicato.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals Ultima modifica di anx721 : 22-11-2005 alle 14:18. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Quote:
Come si fa a capire quanto spazio in heap occupa ciascuna istanza di una classe? Sarebbe utile per giostrarmi i diversi compiti. Ad esempio mi creo una classe statica che fa solo i calcoli. Poi creo tante istanze di una classe più piccola, contenete solo la struttura dati, e le do in input una alla volta alla classe statica. La quale appenderà ciascuna volta il risultato in un file. Dopo aver passato in input l'oggetto lo dealloco e chiamo System.gc() Potrebbe essere? O L'I/O da file rischia di divenire troppo pesante? Va bene fare tanti piccoli append, aprendo e chiudendo ogni volta un flusso di scrittura sul file? O queste operazioni sono troppo costose? Thnks! |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Tipo BufferedWriter?
PS: ho provato a impostare la heap a 512 mega e fila tutto liscio... PPS: come si fa a capire quanti mega occupa un singolo oggetto in esecuzione? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2010
Messaggi: 1710
|
Perdonatemi se riprendo un topic di quasi 6 anni fa, ma vorrei sapere come si può aumentare la memoria virtuale di default della java virtual machine. Vorrei che il limite fosse di 512 mb (o eventualmente di più) ogni volta, senza dover impostare manualmente il parametro ad ogni esecuzione.
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:40.




















