2011-08-04 15 views
21

Desde mi experiencia con Windows 7 (64 bits) y Java, un JRE de 32 bits utiliza menos memoria y se ejecuta significativamente más rápido que un JRE de 64 bits (siempre que no necesita ni se beneficia de tener mucha memoria). Imagino lo mismo es cierto para Mac OSX (y otras plataformas) también.Cómo ejecutar Java de 32 bits en Mac OSX 10.7 Lion

Actualmente estoy ejecutando OSX Lion (v10.7), y he instalado la aplicación Java estándar. En Preferencias de Java, veo "Java SE 6" de "Apple Inc." para ambos tipos de CPU "32 bits" y "64 bits" versión "1.6.0_26-b03-383". He cambiado el orden preferido para poner la versión de 32 bits sobre la versión de 64 bits, con la esperanza de que esto haga que la versión de 32 bits sea la predeterminada.

Pero "java -version" todavía dice:

java version "1.6.0_26" 
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c) 
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode) 

¿Es posible utilizar la versión de 32 bits de forma predeterminada? ¿Y cómo?

Además, ¿alguien tiene experiencias/mediciones comparativas con respecto a la velocidad y la eficiencia de la memoria entre las versiones de 32/64 bits?

+8

BTW, la versión de 16 bits utiliza aún menos memoria y es incluso más rápida. –

Respuesta

21

descubrí ahora, que la JVM de 32 bits puede iniciarse explícitamente utilizando el modificador -d32.

En mi máquina, "-d32 java -version" dice:

java version "1.6.0_26" 
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c) 
Java HotSpot(TM) Client VM (build 20.1-b02-383, mixed mode) 

y aunque no lo dice, es una JVM de 32 bits.

+0

+1 funcionó perfectamente. Ejecuté una aplicación de Java y apareció en Activity Monitor como tipo: 'Intel' en lugar de' Intel (64 bit) '. Por alguna razón, el comando 'arch' no tiene ningún efecto sobre java. – Kelvin

7

Las últimas versiones de Java de 64 bits tienen -XX: + UseCompressedOops activado de forma predeterminada (si su pila es inferior a 32 GB). Esto significa que las referencias de 32 bits se usan en cualquier caso. Los objetos son todavía ligeramente más grande (4 bytes más sobrecarga)

Este artículo compara 32 bits, 64 bits con UseCompressedOops Java: How much memory do different arrays and collections consume

En términos de rendimiento, he encontrado que es 5-10%, dependiendo de qué estás haciendo. Si está utilizando muchos valores de long, será más rápido usar 64 bits.

+0

Esta información es algo útil, pero ¿cómo inicio la JVM de 32 bits? El artículo referido compara JVM de 32 y 64 bits (aunque quizás en una plataforma diferente). – Ulrik

+0

En UNIX, abriría un shell y usaría el nombre completo de la ruta para ejecutar el programa que quiero (funciona para casi cualquier programa). O cambiaría la RUTA predeterminada para incluir el directorio 'bin' en Windows o Unix para usar la versión de 32 bits (de nuevo, nada específico para Java) –

+1

En Windows o UNIX esto es trivial, lo sé ... Todo lo que necesita saber es la ubicación de instalación del JRE para encontrar el binario de Java y quizás establecer una variable de entorno JAVA_HOME adecuada. En una Mac, la instalación de Java es realmente oscura, y no he podido localizar la instalación de 32 bits. PERO creo que la información que se muestra en la GUI de preferencias de Java implica que una versión de 32 bits está presente de alguna manera ... en alguna parte ... – Ulrik

1

Vaya a la aplicación "Preferencias de Java" y arrastre java 32 bit a la parte superior de la lista.

+0

Como ya lo describí, eso es lo que ya probé, sin ver diferencia. – Ulrik

+0

Me funcionó. – serega

1

Pruebe los siguientes pasos:

  1. Abrir el terminal e ir a /System/Library/Frameworks/JavaVM.framework/Versions/
  2. Tipo ls -l para listar todas las versiones disponibles de Java
  3. Introduzca sudo ln -fhsv CurrentJDK

Referencia: Changing Java Version

1

en /System/Library/Frameworks/JavaVM.framework/Versions me encontré con la versión 1.6 instalado y cambia la ruta de java, javac para señalar a /System/Library/Frameworks/JavaVM.framework/Versions/1.6/ casa utilizando el entorno alias en lugar del enlace predeterminado que se encuentra en/usr/bin/

Cuestiones relacionadas