2012-01-06 126 views

回答

27

是的。 Java long在任何JVM上都是64位,无一例外。所有Java基元类型都是完全可移植的,并且在所有实现中都具有固定大小。

+5

JLS参考:http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3 – Mat 2012-01-06 15:08:53

4

是的。 A long被称为64位整数。

4

原始类型始终是相同的大小。只有引用可以改变大小,但你通常不需要知道这一点。

您可以

int addressSize = Unsafe.addressSize(); 

注获得参考的尺寸:即使是在64位JVM(在最新的Java的JVM 6+),引用是32位的,但除非你使用32 GB堆或更大。这是OpenJDK/Sun/Oracle JDK的默认值,但是@ user988052指出,IBM JVM需要在命令行上设置适当的标志。其他JVM可能根本不支持此选项。

+0

*即使在64位JVM(在最新的Java 6+ JVM上)中,引用是32位,除非你使用32 GB的堆或更大* ...是不是依赖于JVM? * -XX:Oracle/Sun JVMs上的+ UseCompressedOOps *现在确实是默认的,但据我所知,例如IBM JVM明确指出,如果您不*使用* Xcompressedrefs * VM参数,那么引用在默认情况下存储在64位... – TacticalCoder 2012-01-06 16:12:55

+0

我已更新我的答案,包括您的评论,谢谢。 – 2012-01-06 16:21:08