¿Cómo puedo saber si estoy ejecutando JVM de 64 bits o JVM de 32 bits (desde dentro de un programa)?

Resuelto BobMcGee asked hace 14 años • 13 respuestas

¿Cómo puedo saber si la JVM en la que se ejecuta mi aplicación es de 32 bits o de 64 bits? Específicamente, ¿qué funciones o propiedades puedo usar para detectar esto dentro del programa?

BobMcGee avatar Jan 14 '10 10:01 BobMcGee
Aceptado

Para ciertas versiones de Java, puede verificar el bitness de la JVM desde la línea de comando con las banderas -d32y -d64.

$ java -help
...
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available

Para comprobar si hay una JVM de 64 bits, ejecute:

$ java -d64 -version

Si no es una JVM de 64 bits, obtendrás esto:

Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.

De manera similar, para buscar una JVM de 32 bits, ejecute:

$ java -d32 -version

Si no es una JVM de 32 bits, obtendrás esto:

Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

Estas banderas se agregaron en Java 7, quedaron obsoletas en Java 9, se eliminaron en Java 10 y ya no están disponibles en las versiones modernas de Java.

gpampara avatar Jan 14 '2010 05:01 gpampara

Recuperas la propiedad del sistema que marca el bitness de esta JVM con:

System.getProperty("sun.arch.data.model");

Los posibles resultados son:

  • "32"– JVM de 32 bits
  • "64"– JVM de 64 bits
  • "unknown"– JVM desconocida

Como se describe en las preguntas frecuentes de HotSpot :

Al escribir código Java, ¿cómo distingo entre operaciones de 32 y 64 bits?

No existe una API pública que le permita distinguir entre operaciones de 32 y 64 bits. Piense en 64 bits como una plataforma más en la tradición de escribir una vez y ejecutar en cualquier lugar. Sin embargo, si desea escribir código que sea específico de la plataforma (qué vergüenza), la propiedad del sistema sun.arch.data.model tiene el valor "32", "64" o "desconocido".

Un ejemplo en el que esto podría ser necesario es si su código Java depende de bibliotecas nativas y necesita determinar si desea cargar la versión de 32 o 64 bits de las bibliotecas al inicio.

codaddict avatar Jan 14 '2010 03:01 codaddict