我们有一个运行在Mac 1.5上的应用程序,这是一个32位的虚拟机。 堆内存在限制内。 当我们将这个应用程序移动到Java 1.5(64位)的Linux时,内存利用率增加了50%。 在Linux下jvm的内存足迹会如此之高吗? 我们在Linux上有相同的补丁吗?
64位应用程序需要比32位更多的存储空间(更大的variables,指针等)是很平常的。 这和两个系统之间不同的JVM实现很可能是原因。
我个人并不觉得这是奇怪的,所以我不认为这是一个问题,除非内存使用开始像疯了似的性能问题出现了一些类似的问题。
在64位环境中,所有的指针占用两倍的空间。 长整数也可能,但我认为他们已经是64位的两种情况。
影响你的多less取决于你的具体情况,任何对象引用都是一个指针。 如果你的对象主要是链接到其他对象,它们将被炸毁。
有32位的JVM的Linux版本。 坏消息是,一旦你超过了32位,你从2-3GB变成了需要4-6GB的标准。