Haga que JVM use la memoria virtual solo después de usar 1 GB de RAM

2

Me gustaría ejecutar un programa Java intensivo en memoria y limitar la cantidad de memoria física que puede usar.

¿Es posible configurar la JVM para usar no más de 1 gb de RAM y usar solo memoria virtual después de que haya usado los primeros 1 gb de RAM?

Me gustaría que el programa pueda tener tanto espacio de direcciones como sea necesario (varios GB), pero no quiero que use toda la RAM disponible en la máquina.

instancia de Tom
fuente
1
Puede buscar un programa de terceros que limite la memoria utilizada por cualquier aplicación. Esto no es específico de la JVM.
Sasha Chedygov

Respuestas:

3

Encontré una solución viable para Ubuntu:

Utilizando la utilidad del sistema ulimitpude establecer la memoria física máxima y ulimitse llamó a muchos otros límites de recursos para cualquier proceso generado desde el shell .

Todo lo que tenía que hacer era abrir un shell, llamar ulimity luego iniciar el proceso.

instancia de Tom
fuente
1

No, no conozco ninguna solución que te permita hacer esto. No estoy seguro de que esto sea posible sin grandes cambios arquitectónicos; después de todo, el sistema operativo generalmente decide caso por caso qué datos intercambiar y cuáles mantener en la RAM. No me queda claro que tal restricción sea incluso práctica; en cualquier caso, probablemente requeriría cambios profundos en el sistema operativo.

Contrapregunta: ¿Por qué crees que esto es necesario? El subsistema de memoria virtual de un sistema operativo moderno ha sido ajustado para brindarle el mejor rendimiento posible. ¿Qué te hace creer que puedes hacerlo mejor?

Más:

Si realmente tiene problemas de memoria, simplemente compre más RAM. 4GB cuestan alrededor de $ 100, solo comprarlo es probablemente más efectivo que pasar horas ajustando el subsistema VM ...

sleske
fuente
No tengo problemas de memoria en general (tengo 8 gb), solo con este procesamiento único en algunos datos de imágenes enormes. El problema es que Ubuntu asigna al programa hasta 7 GB de RAM según sea necesario. Esto no es bueno porque este proceso debe ejecutarse en segundo plano mientras hago otras cosas, no importa cuánto se agite el disco o cuán lento sea el rendimiento de ese programa. Lo importante es mantener el ram en mi máquina disponible para otras tareas.
instanceofTom