2011-07-10 12 views
21

Solo se enfrentó con un problema extraño. Cuando escriboNo se pudo reservar suficiente espacio para que el montón de objetos inicie JVM

java -version 

tengo

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

.

java -Xms64m -Xmx64m -version 

Este comando funciona bien

java version "1.6.0_24" 
Java(TM) SE Runtime Environment (build 1.6.0_24-b07) 
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode) 

si cambio XMS, xmx a 128m, me sale el error de nuevo.

Usando el comando top y free -m puedo ver que obtuve más de 192 mb libres, entonces ¿por qué sigo recibiendo este error?

Mem: 262144k total, 64760k used, 197384k free,  0k buffers 
Swap:  0k total,  0k used,  0k free,  0k cached 

Gracias

+0

De repente tuve este problema hoy - resulta que había cambiado a OpenJDK JRE 7. Normalmente estoy usando Oracle JDK 8 que no muestra este problema - al menos no con un número pequeño de máquinas virtuales. –

Respuesta

11

Parece que la máquina que está tratando de ejecutar esto en sólo tiene 256 MB de memoria.

Quizás la JVM intente asignar un bloque grande y contiguo de 64 MB de memoria. Los 192 MB que tiene libres pueden estar fragmentados en pedazos más pequeños, de modo que no haya un bloque contiguo de 64 MB libres para asignar.

Trate de comenzar el programa Java con un tamaño de la pila más pequeña, por ejemplo:

java -Xms16m ... 
+0

Sí, mi máquina solo obtuvo 256 mb, con -Xms16m y -Xms64m funciona bien. Pero 64 no es suficiente para mis necesidades. ¿Se puede arreglar de alguna manera, entonces puedo usar 128 mb? – user12384512

+0

Tenga en cuenta que '-Xms' establece el tamaño de almacenamiento dinámico inicial (' -Xmx' establece el tamaño de almacenamiento dinámico máximo). ¿Su programa realmente necesita un tamaño de pila ** inicial ** de 64 MB? ¿Por qué no dejar que la JVM crezca automáticamente? – Jesper

+0

Sí, lo sé. Pero en realidad no importa. Como java -Xms16m -Xmx128m -version también falló – user12384512

5

Según this post significa este mensaje de error:

el tamaño de acumulación es mayor que la memoria física del equipo.

Editar: Montón no es la única memoria que se reserva, supongo. Al menos hay otras configuraciones de JVM como PermGenSpace que piden la memoria. Con un tamaño de almacenamiento 128M y un PermGenSpace de 64M, usted ya llena el espacio disponible.

¿Por qué no reducir el tamaño de otras configuraciones de memoria para liberar espacio para el montón?

12

Tuve el mismo problema al usar una versión de java de 32 bits en un entorno de 64 bits. Al usar 64 java en un sistema operativo 64, estaba bien.

+0

Tengo el mismo problema. Usando 32bit Java en un sistema de 64 bits. Comenzando con Xmx1024 resultó en el error anterior. ¡Comenzar con Xmx512 funciona bien! – T3rm1

+0

Tuve el mismo problema. Estaba usando 32bit JRE en mi PC de 64 bits.Cambié el JRE al sistema de 64 bits y mi problema está resuelto. – Devrim

Cuestiones relacionadas