Solución:
Prácticamente lo ha logrado, excepto que estas opciones se recogen incluso si inicia JVM en proceso a través de una llamada a la biblioteca.
El hecho de que _JAVA_OPTIONS
no está documentado sugiere que no se recomienda usar esta variable y, de hecho, he visto a personas abusar de ella al establecerla en su ~/.bashrc
. Sin embargo, si desea llegar al fondo de este problema, puede verificar la fuente de Oracle HotSpot VM (por ejemplo, en OpenJDK7).
También debe recordar que no hay garantía de que otras máquinas virtuales tengan o seguirán teniendo soporte para variables no documentadas.
ACTUALIZACIÓN 2015-08-04: para ahorrar cinco minutos a las personas que proceden de los motores de búsqueda, _JAVA_OPTIONS
triunfa sobre los argumentos de la línea de comandos, que a su vez triunfan JAVA_TOOL_OPTIONS
.
Hay una diferencia más: _JAVA_OPTIONS
es específico de Oracle. IBM JVM está utilizando IBM_JAVA_OPTIONS
en lugar de. Esto probablemente se hizo para poder definir opciones específicas de la máquina sin colisiones. JAVA_TOOL_OPTIONS
es reconocido por todas las máquinas virtuales.
JAVA_OPTS
no tienen ningún manejo especial en JVM.
Y de acuerdo con https://bugs.openjdk.java.net/browse/JDK-4971166 el JAVA_TOOL_OPTIONS
está incluido en la especificación estándar de JVMTI, hace un mejor manejo de los espacios entre comillas y siempre debe preferirse en lugar de los Hotspot específicos no documentados _JAVA_OPTIONS
.
También tenga en cuenta que el uso de estos imprime un mensaje adicional a la salida estándar que no se puede suprimir.
Como señaló @ryenus, desde JDK 9+, hay JDK_JAVA_OPTIONS como reemplazo preferido, consulte ¿Cuál es la diferencia entre JDK_JAVA_OPTIONS y JAVA_TOOL_OPTIONS cuando se usa Java 11?