java - que - Establecer los parámetros de JVM en tiempo de ejecución
que es jvm en java (2)
Una respuesta corta es que no puede cambiar los parámetros de VM en tiempo de ejecución. La clase Runtime expone algunas opciones, como la memoria máxima. Los parámetros principales, como la memoria máxima, solo deben configurarse por un tipo de administrador que permita la administración de recursos cuando coexistan varias JVM en una máquina. Permitir que una JVM se vuelva codiciosa y solicite mucho más de lo que se asignó eliminaría esta restricción.
¿Es posible cambiar / modificar / agregar parámetros de VM después de que la JVM ya esté cargada (ejecutándose)? Si es así, ¿cómo puedo hacerlo?
Para propiedades que haya establecido a través del indicador -D
en la línea de comando, quiere System.setProperty . Por ejemplo:
System.setProperty("propname", "hello world");
// ... later ...
String value = System.getProperty("propname");
Actualizar:
No puede habilitar la depuración dinámicamente, pero puede habilitar la depuración al inicio pero adjuntar un depurador más adelante. Con lo siguiente, puede escuchar en el puerto 12345 e iniciar su programa ejecutándose de inmediato (a través de suspend=n
). Luego puede adjuntar un depurador si lo necesita, desconectar el depurador, volver a conectarlo más tarde, etc.
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345
Por supuesto, esto perjudica el rendimiento incluso cuando el depurador no está conectado, por lo que solo funciona bien en el código de desarrollo / prueba, no en la producción. Para eso, quiere iniciar sesión, por ejemplo, log4j .