Quiero limitar la memoria máxima utilizada por la JVM. Tenga en cuenta que esto no es solo el montón, quiero limitar la memoria total utilizada por este proceso.
java
memory
memory-management
memory-leaks
profiling
erotsppa
fuente
fuente
-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.
Ejemplo:
Eso permitirá un máximo de 1 GB de memoria para la JVM.
fuente
-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
fuente
ulimit
un comando de Linux? Hice una búsqueda rápida en Google y no vi ninguna relación entreulimit
y la JVM. YLa 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.
fuente
Nunca lo he usado. Quizás lo encuentres útil.
fuente