2009-10-14 28 views
211

Estoy trabajando en un servidor de Windows 2003 (64 bits) con 8 GB de RAM. ¿Cómo puedo aumentar el máximo de memoria de montón? Estoy usando el indicador -Xmx1500m para aumentar el tamaño del almacenamiento dinámico a 1500 Mb. ¿Puedo aumentar la memoria del montón al 75% de la memoria física (6 GB de Heap)?Aumentar el tamaño del almacenamiento dinámico en Java

+2

Supongo que intentó aumentar el montón, pero ¿falló? ¿Estás usando una JVM de 64 bits? –

+2

¿Has probado '-Xmx6g'? ¿Esto no funcionó? ¿Qué observaste? –

+0

Gracias por comentar pero esto no está funcionando – Sunil

Respuesta

265

Puede aumentar a 4 GB en un sistema de 32 bits. Si tienes un sistema de 64 bits, puedes ir más alto. No necesita preocuparse si ha elegido incorrectamente, si solicita 5g en un sistema de 32 bits, java se quejará de un valor no válido y lo abandonará.

Como otros han publicado, utilice las banderas cmd línea - por ejemplo,

java -Xmx6g myprogram 

Puede obtener una lista completa (o una lista casi completa, de todos modos) escribiendo java -X.

+16

Según mi experiencia, el tamaño de pila real que Java aceptará al usar una máquina virtual 32b (en un sistema 32b o 64b, la VM es la parte importante, aquí), está alrededor de 2G. También, autor de la pregunta sorprendió no primero buscar y encontrar: http://stackoverflow.com/questions/1596009/java-lang-outofmemoryerror-java-heap-space y: http://stackoverflow.com/ questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error-64mb-heap-s – wsorenson

+2

ah, tienes razón, por supuesto, en un sistema de 32 bits solo puedes abordar 2 Gb de memoria. –

+0

¿Es necesario que el montón máximo y el tamaño de montón mínimo sean los mismos? – user1747935

5

Puedo aumentar la memoria del montón al 75% de la memoria física (6GB de Heap).

Sí se puede. De hecho, puede aumentar a más de la cantidad de memoria física, si lo desea.

Si es una buena idea hacer esto depende de cuánto más está ejecutando en el sistema. En particular, si el "conjunto de trabajo" de las aplicaciones y servicios que se están ejecutando actualmente excede significativamente la memoria física disponible, su sistema es susceptible de "agitar", pasando mucho tiempo moviendo páginas de memoria virtual hacia y desde el disco. El efecto neto es que el sistema se vuelve terriblemente lento.

+0

Gracias por su comentario, pero ¿cómo puedo aumentar.Plz puede dar el comando. – Sunil

+0

Pruebe -Xmx6000m. Debería funcionar si está utilizando una versión de 64 bits de Java. –

+0

Lo siento Boss todavía no funciona – Sunil

25

en una JVM de 32 bits, el tamaño de la pila más grande puede establecer teóricamente es de 4 GB. Para usar un tamaño de almacenamiento dinámico más grande, debe usar una JVM de 64 bits. Pruebe lo siguiente:

java -Xmx6144M -d64

La bandera -d64 es importante ya que esto le dice a la JVM para ejecutar en modo de 64 bits.

+0

Gracias, jefe, pero no está funcionando en mi sistema, hay algo más que me falta – Sunil

+3

Define "no funciona". ¿No comienza y te da un error? ¿Comienza pero usa un tamaño de pila diferente? – Kevin

139

Es posible aumentar el tamaño del montón asignado por la JVM utilizando las opciones de línea de comandos Aquí tenemos 3 opciones

-Xms<size>  set initial Java heap size 
-Xmx<size>  set maximum Java heap size 
-Xss<size>  set java thread stack size 

java -Xms16m -Xmx64m ClassName 

En la línea anterior podemos establecer montón mínima para 16mb y almacenamiento dinámico máximo 64mb

9

es posible aumentar el tamaño del montón asignado por la JVM en Eclipse directamente en Goto IDE Eclipse

Run ----> Ejecutar configuraciones ----> Argumentos

Introduzca -Xmx1g (Se utiliza para establecer el tamaño máximo como -Xmx256m o Xmx1g ...... m -> mb g ---> gb)

+3

Solo para agregar esto debería haber un argumento VM (eclipse le da dos opciones). –

8

java -d64 -Xms512m -Xmx4g HelloWorld

donde, -d64: permitirá a JVM de 64 bits -Xms512m: Will establecer el tamaño inicial del almacenamiento dinámico como 512 MB -Xmx4g: Will establecer el tamaño máximo del montón como 4 GB (aquí el nombre del archivo java es: HelloWorld.java)

0

Esto solo funciona con la versión de 64 bits de Java. Vaya a Panel de control y haga clic en el icono de Java.En la pequeña ventana del Panel de control de Java, haga clic en la barra de menú de Java y luego haga clic en el botón view.

Si tiene dos plataformas Java, desactivar la versión anterior de Java, a continuación, haga clic en Parámetros de tiempo de ejecución campo de texto y escribir -Xmx1024m o menor que el tamaño de RAM. No aumente el tamaño del almacenamiento dinámico igual a la RAM; de lo contrario, su sistema fallará.

+3

un voto? por esta respuesta? – madhairsilence

1

Utilice a continuación comando para cambiar tamaño de la pila de 6 GB

export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m" 
+0

Si tengo memoria 8G en mi sistema y puedo ver desde el administrador de tareas que siempre está en uso el 70% de eso; ¿Es esto posible asignar memoria 6G al tamaño de pila de Java? –

0

Sí. Usted puede.

Puede aumentar la memoria de su pila al 75% de la memoria física (6 GB de Heap) o superior.

Dado que está utilizando 64bit puede aumentar el tamaño de su pila a la cantidad que desee. En caso de que esté utilizando 32 bits, está limitado a 4 GB.

$ java -Xms512m -Xmx6144m JavaApplication 

le fija con el tamaño inicial del almacenamiento dinámico de 512 MB y un máximo HEAPSIZE 6 GB.

creo que sirve .. :)

+0

Esto parece muy similar a las dos respuestas mejor votadas publicadas unos años antes. – Dukeling

1

Varias personas señalaron las respuestas específicas para el tamaño de la pila con las opciones de JVM de -Xms y -Xms. Quiero señalar que este no es el único tipo de opciones de memoria para el jvm. Específicamente, si obtiene acumular flujos, entonces querrá aumentar el tamaño de la pila agregando una opción adicional como -Xss8m.

Para este problema, las opciones de jvm de algo como -Xms2g -Xmx6g -Xss8m serían una solución.

Estoy compartiendo esta información ya que mis búsquedas de Google sobre cómo aumentar la memoria jvm me llevaron a esta solución, y las soluciones no funcionaron con grandes cantidades de asignación de memoria. Una vez que descubrí para qué eran las configuraciones específicas, pude buscar en Google cómo aumentar el tamaño de la pila y encontré el parámetro faltante. :) Espero que esto ahorre tiempo a otros, ya que me hubiera ahorrado un montón de tiempo. :)

2

Puede aumentar el tamaño del montón pasando parámetros JVM -Xms y -Xmx, como a continuación:

Para archivos JAR:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar 

en archivos Java:

java -Xms4096M -Xmx6144M ClassName 

Los parámetros anteriores aumentan el InitialHeapSize (-Xms) a 4 GB (4096 MB) y MaxHeapSize (-Xmx) a 6 GB (6144 MB).

embargo, la generación joven Montón Tamaño permanecerá igual y el TamañoPila adicional será añadido a la vieja generación Tamaño de pila. Para igualar el tamaño de Young Gen Heap y Old Gen Heap, use -XX: NewRatio = 1 -XX: -UseAdaptiveSizePolicy params.

java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar 

-XX: NewRatio = Gen Viejo Montón Tamaño: joven Gen TamañoPila (Usted puede jugar con esta relación para obtener su relación deseada).

Cuestiones relacionadas