我有一个相当存储器饿Java应用程序。 在使用Windows XP专业版我的32个系统,如果我给它-Xmx1280m应用程序将只运行正常。下的所有内容将在一个java.lang.OutOfMemoryError: Java heap space异常结束。

如果我运行在64位的Windows XP专业版(一切完全相同)相同的应用程序它需要-Xms1400m防止内存溢出的情况。

要我的理解,如果我有一个C程序和予编译它为32位和64位的 64位版本将需要更多的内存,因为指针是更广泛,等等。 在我的Java实例然而虚拟机(日)是相同的,并且字节码是相同的。

<强>为什么它需要64位计算机上多个存储器吗

有帮助吗?

解决方案

大概是因为在虚拟机实施32/64位体系结构之间的,因为它消耗更多的存储器(较宽类型,不同的GC)这样的方式而不同。

字节码是不相关的时,它通过对任务的底层系统。林不知道Java和内存效率是两个方面,我无论如何都会放在一起:P

其他提示

即使您的字节码是相同的,在JVM转换其成机器代码,因此具有所有相同的理由,C到需要较大的内存占用量。

这是你已经列出了C程序一样的道理。 64位系统使用大的内存地址,从而使其成为“leakier”(我相信这是我听到的用来形容它已经术语)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top