2012-01-06 27 views

Respuesta

27

Sí. Un Java long es de 64 bits en cualquier JVM, sin excepción. Todos los tipos primitivos de Java son completamente portátiles y tienen tamaños fijos en todas las implementaciones.

+5

Referencia de JLS: http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3 – Mat

4

Sí. Un long se conoce como un entero de 64 bits.

4

Los tipos primitivos son siempre del mismo tamaño. Solo las referencias pueden cambiar de tamaño, pero generalmente no necesita saber esto.

Puede obtener el tamaño de una referencia con

int addressSize = Unsafe.addressSize(); 

Nota: Incluso en una JVM de 64 bits (en los últimos Java JVM 6+), las referencias son de 32 bits, pero a menos que utilice un 32 GB montón o más grande. Este es el valor predeterminado en OpenJDK/Sun/Oracle JDK; sin embargo, como @ user988052 notas, IBM JVM necesita el indicador apropiado para establecerse en la línea de comando. Es posible que otras JVM no sean compatibles con esta opción.

+0

* Incluso en una JVM de 64 bits (en el lateset Java 6+ JVM), las referencias son de 32 bits a menos que use un montón de 32 GB o más grande * ... ¿No es dependiente de JVM? * -XX: + UseCompressedOOps * en Oracle/Sun JVMs ahora es el predeterminado, por lo que sé, pero aparentemente la JVM de IBM, por ejemplo, especifica que si * no * usa su * VM parámetro * Xcompressedrefs *, entonces las referencias se almacenan en 64 bits por defecto ... – TacticalCoder

+0

He actualizado mi respuesta para incluir su comentario, gracias. –

Cuestiones relacionadas