难道32位进程需要更多的内存时,它运行在64位系统上?
-
21-08-2019 - |
题
我有一个相当存储器饿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”(我相信这是我听到的用来形容它已经术语)。
不隶属于 StackOverflow