Necesito ejecutar una aplicación Java con uso intensivo de memoria que utilice más de 2 GB, pero tengo problemas para aumentar el tamaño máximo del montón. Hasta ahora, he probado los siguientes enfoques:
Configuración del parámetro -Xmx, por ejemplo, -Xmx3000m. Este enfoque falla en la creación de la JVM. Por lo que busqué en Google, parece que -Xmx debe tener menos de 2 GB.
Usando la opción -XX: + AggressiveHeap . Cuando intento este método, aparece un error de "Memoria insuficiente" que indica que el tamaño del montón es 1273,4 MB, aunque mi computadora tiene 8 GB de memoria.
¿Existe otro enfoque que pueda intentar para aumentar el tamaño máximo de pila de la JVM? Aquí hay un resumen de las especificaciones de la computadora:
- SO: Windows 7 (64 bits)
- Procesador: Intel Core i7 (2,66 GHz)
- Memoria: 8 GB
- versión java:
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
java
jvm
jvm-arguments
Alceu Costa
fuente
fuente
Respuestas:
Consiga una JVM de 64 bits de Oracle .
fuente
Cuando utiliza JVM en modo de 32 bits, el tamaño de almacenamiento dinámico máximo que se puede asignar es 1280 MB. Entonces, si desea ir más allá, debe invocar JVM en modo 64.
Puede utilizar lo siguiente:
dónde,
Puede sintonizar -Xms y -Xmx según sus requisitos (YMMV)
Un recurso muy bueno sobre el ajuste del rendimiento de JVM, que quizás desee consultar: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
fuente
Creo que el límite de 2 GB es para Java de 32 bits. Pensé que la v1.6 era siempre de 64 bits, pero intente forzar el modo de 64 bits solo para ver: agregue la opción -d64.
fuente
Java de 32 bits está limitado a aproximadamente 1,4 a 1,6 GB.
Preguntas frecuentes sobre el montón de Oracle de 32 bits
Citar
El límite de montón teórico máximo para la JVM de 32 bits es 4G. Debido a varias restricciones adicionales, como el intercambio disponible, el uso del espacio de direcciones del kernel, la fragmentación de la memoria y la sobrecarga de la VM, en la práctica, el límite puede ser mucho menor. En la mayoría de los sistemas Windows modernos de 32 bits, el tamaño máximo del montón oscilará entre 1,4G y 1,6G. En los kernels Solaris de 32 bits, el espacio de direcciones está limitado a 2G. En los sistemas operativos de 64 bits que ejecutan la máquina virtual de 32 bits, el tamaño máximo de pila puede ser mayor, acercándose a 4G en muchos sistemas Solaris.
fuente
A continuación, conf funciona para mí:
JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/ PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH export PATH export JAVA_HOME JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server" /JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
fuente