2009-05-26 11 views
16

esegue un codice Java con il seguente comando: capacità di memoria RAMEvitare iniziale memoria heap Errore formato

$ java -Xms4G -Xmx4G myjavacode 

mio CPU è di 6 GB.

Tuttavia sempre non riescono a eseguire avermi dato questo messaggio errore:

Invalid initial heap size: -Xms5G 
The specified size exceeds the maximum representable size. 
Could not create the Java virtual machine 

C'è un modo per impostare l'opzione Java in modo da poter eseguire il codice?

+0

Quale JVM stai utilizzando? –

+0

@roland: jdk1.6.0_14/bin/java – neversaint

+4

Sei sicuro di utilizzare la JVM a 64 bit? Quanta memoria non può essere risolta a 32 bit. – diciu

risposta

15

Hai superato la dimensione massima dell'heap della JVM. Questo dipende sia dalla JVM che dal SO. Nella maggior parte dei sistemi a 32 bit il valore massimo sarà 2 Gb, indipendentemente dalla memoria fisica disponibile.

+3

Su Windows 32 bit il limite è più vicino a 1,3 GB –

+0

Viene visualizzato l'errore 'Dimensione heap iniziale non valida: -Xms256m -Xmx512m' su un sistema con 16 GB di RAM (14 GB liberi) –

3

In realtà, la dimensione massima della memoria nei sistemi a 32 bit può variare, essendo qualsiasi cosa fino a 4 GB, ma 2 GB è un valore comune. È spesso possibile ricollegare il kernel per aumentare questo a 3 o 3,5 GB. Il problema, naturalmente, è che non hai lo spazio degli indirizzi per mappare più memoria. Hai provato una macchina a 64 bit?

Inoltre, ricordarsi di impostare il ulimit più alto prima di eseguire questa operazione.

9

Per impostazione predefinita, Java verrà eseguito in modalità a 32 bit. Assicurati di dargli l'opzione -d64 per metterla in modalità 64 bit. Una volta in modalità 64 bit, non dovresti avere problemi ad allocare una JVM da 6 GB.

+2

Significa che viene eseguita anche una JVM a 64 bit in modalità a 32 bit di default? – Pacerier

+0

il mio problema è stato risolto con questo parametro -d64 su Solaris Sparc 64 bit con Java Runtime Environment (build 1.6.0_21-b06) Java (TM) java. Grazie –