我有一个Debian服务器VPS,并且提供程序安装了64位Debian5。考虑到我只有750 MB的RAM并且听说过变量在64位系统上占用了更多的RAM,我是否应该要求32位安装?
我有一个Debian服务器VPS,并且提供程序安装了64位Debian5。考虑到我只有750 MB的RAM并且听说过变量在64位系统上占用了更多的RAM,我是否应该要求32位安装?
Answers:
简短的答案:
在64位和32位软件中,变量不会占用两倍的空间。从切换到32位OS可能获得的内存收益将不值得付出。
长答案:
数字可以更大,是的,但这并不意味着会如此。这也适用于数字,而不是字符串,并且(通常)字符串是消耗应用程序中最大内存量的字符串。
此外,许多应用程序都明确指定了要使用的数字的大小,例如C之类的语言,int
可以是任意大小,包括小于32位的大小。甚至更进一步,在我的64位Linux机器上,C语言int
是32位。因此,您必须明确要求long long
获得64位数字。
因此,基本上,应用程序不会仅仅因为它们是针对64位编译的而使用更多的内存。
编辑:
为回应Gilles的说法,即64位Firefox使用两倍的内存,我去了一下,并在系统上对32位和64位Firefox进行了比较。
我通过启动5个打开http://acid3.acidtests.org/的选项卡进行了测试,并进行了3次测试(一次在32位中,一次在64位中,然后重复两次)。我之所以选择这个网站,是因为它需要JavaScript,而且使用静态内容(页面的每个呈现都将提供相同的数据)。
在最后的运行中:
32位:173,244kb rss / 918,348kb virt
64位:184,588kb rss / 966,624kb virt
我可以进行更广泛的测试,但是我认为这足以说明两者之间的大小差异很小。
除了一些运行速度更快的数字处理应用程序外,64位系统的唯一好处是您可以处理4GB以上的内存。由于某些地址空间是为内核保留的,因此一个进程只能获得大约2GB或3GB的地址空间(或多或少,取决于内核配置)。对于数据库和Web服务器用例,您不打算进行太多交换,也不打算进行太多的数字运算。因此,只有750MB的RAM,使用64位系统不会带来任何好处。
i386(32位)和amd64(64位)代码之间的代码大小大致相同。64位程序使用的数据存储器要大一些。多少取决于应用程序。我希望您的用例能看到明显的差异,但差异不大。
考虑到使用64位系统的成本很少,也没有任何好处,因此建议您使用32位系统,如果这样做不太麻烦。