View Full Version : [JAVA] Problema: aumentare heap space
Ciao a tutti,
lavoro su win 7 con eclipse 3.7. Sto sviluppando un programma di gestione aziendale che mi si blocca per questo errore: java.lang.OutOfMemoryError: Java heap space. Ho cercato in giro su internet ma non riesco a capire come poter aumentare la dimensione disponibile per la Virtual Machine. Presumo il problema sia solo questo, la dimensione della VM. Nessuno ha mai riscontrato questo caso? Avrei bisogno di una mano :help:
Grazie a tutti
banryu79
15-07-2011, 16:38
Ci sono due parametri appositi che puoi passare al comando java per configurare l'heap size.
...
-Xmsn
Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 2MB. Examples:
-Xms6291456
-Xms6144k
-Xms6m
-Xmxn
Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 64MB. Examples:
-Xmx83886080
-Xmx81920k
-Xmx80m
ok grazie, è proprio questo il mio dubbio: dove devo inserire i comandi? dal prompt? ci ho provato ma non mi apre la classe... potresti farmi un esempio per favore?
http://dinu.blog.com/2010/06/02/out-of-memory/
;)
Grazie ma non è servito, già lo avevo provato purtoppo. Ho anche modificato il file eclipse.ini e cambiato direttamente li la massima dimensione ma ho sempre lo stesso errore. Non so proprio come rimediare :help:
Ma siamo sicuri che questo errore non sia sintomo di qualche errore nel programma?
Sono sicuro che il programma è corretto, in quanto l'errore di memoria terminata accade in diversi punti del programma, cioè a seconda di quante operazioni ho fatto può apparire prima o dopo, non in punto preciso, altrimenti avrei trovato l'errore. Putroppo il programma è molto pesante, è vero, ma corretto. Cosa posso fare?
Sono sicuro che il programma è corretto, in quanto l'errore di memoria terminata accade in diversi punti del programma, cioè a seconda di quante operazioni ho fatto può apparire prima o dopo, non in punto preciso...
Questo non mi sembra indice di alcunché.... :mbe:
Comunque puoi attaccare visualvm (googla qualcosa tipo "detect memory leak with visualvm") al processo, tracciare tutto (con relativo overhead a spruzzo) e vedere se le "surviving generations" crescono in continuazione (probabile memory leak) e quali sono le classi che occupano più memoria.
Come le imposti le opzioni per la vm per dimensionare lo spazio di heap? (fai uno screenshot al massimo se fai tutto da eclipse e non a riga di comando...)
Proverò VisualVM e riferirò, comunque non avendo mai avuto problemi di questo genere non ho mai settato la VM, gli unici parametri che ho messo sono stati gli stessi suggeriti qui nella discussione.
Il programma in se funziona, lo stiamo sviluppando e funzionava bene. E' stata aggiunta una classe ultimamente ma molto semplice, controllata e ricontrollata e da quel momento da l'errore di heap space. Ma questa classe non modifica in nulla il programma! Ho impostato solamente il massimo spazio, 1024MB che penso bastino. Avevo fatto delle prove con un valore maggiore ma il compilatore non era in grado di creare la VM.
Vorrei comunque ringraziare tutti per l'aiuto! :D
Appena possibile metterò i risultati di VisualVM.
Allora, non ho avuto bene il tempo di capire come usare visualVM, però sono riuscito a collegarlo ad eclipse e ad analizzare la memoria mentre facevo girare il programma. Il grafico dell'heap space mi segna come dimensione massima 66MB e il problema arriva quando il programma calcola i dati immessi, dove sfioro i 600-700MB e poi si attesta sui 500, ovviamente sforando il tetto dei 66. Quindi mi sorge il dubbio che non sono riuscito a impostare la massima dimensione dell'heap space, eppure ho seguito le guide... Qualcuno potrebbe spiegarmi cosa fare?:help:
franksisca
16-07-2011, 12:05
per me più che un errore sull'heap è un errore sulla gestione dei dati.
cmq per cambiarlo in eclipse io modificavo i file:
eclipse.ini: la memoria per il VM in esecuzione Eclipse
impostazione jre: la memoria per eseguire programmi Java da Eclipse
catalina.sh: la memoria per il server Tomcat
controllati bene la gestione dei dati...
impostazione jre: la memoria per eseguire programmi Java da Eclipse
catalina.sh: la memoria per il server Tomcat
Ora va!! Grazie mille, finalmente sono riuscito ad aumentare questo heap space! :cool:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.