Respuestas:
usa los argumentos -Xms<memory>
-Xmx<memory>
. Use M
o G
después de los números para indicar Megs y Gigs de bytes respectivamente. -Xms
indica el mínimo y -Xmx
el máximo.
-Xmx524M
y el proceso toma 1.2 GB de RAM. (?)
No debería tener que preocuparse por la pérdida de memoria de la pila (es muy poco frecuente). La única vez que puede hacer que la pila se salga de control es con una recursión infinita (o realmente profunda).
Esto es solo el montón. Lo sentimos, no leí tu pregunta por completo al principio.
Debe ejecutar la JVM con el siguiente argumento de línea de comando.
-Xmx<ammount of memory>
Ejemplo:
-Xmx1024m
Eso permitirá un máximo de 1 GB de memoria para la JVM.
-XX:MaxDirectMemorySize
. No es que me haya perfilado mucho para asegurarme, pero aún así;)
MaxDirectMemorySize
único afecta a los buffers NIO. JVM utiliza todo tipo de otra memoria nativa.
Si desea limitar la memoria para jvm (no el tamaño de almacenamiento dinámico) ulimit -v
Para tener una idea de la diferencia entre jvm y memoria de almacenamiento dinámico, eche un vistazo a este excelente artículo http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- java-process.html
ulimit
un comando de Linux? Hice una búsqueda rápida en Google y no vi ninguna relación entre ulimit
y la JVM. Y
La respuesta anterior es correcta, no puede controlar con gracia cuánta memoria nativa asigna un proceso Java. Depende de lo que esté haciendo su aplicación.
Dicho esto, dependiendo de la plataforma, es posible que pueda utilizar algún mecanismo, ulimit, por ejemplo, para limitar el tamaño de un Java o cualquier otro proceso.
Simplemente no esperes que falle con gracia si alcanza ese límite. Las fallas de asignación de memoria nativa son mucho más difíciles de manejar que las fallas de asignación en el montón de Java. Existe una posibilidad bastante buena de que la aplicación se bloquee, pero dependiendo de cuán crítico sea para el sistema mantener el tamaño del proceso bajo que aún podría adaptarse a usted.
NativeHeap se puede aumentar en -XX: MaxDirectMemorySize = 256M (el valor predeterminado es 128)
Nunca lo he usado. Quizás lo encuentres útil.