运行具有 750 MB RAM 的 64 位 Linux:值得吗?

Jho*_*nes 13 64bit debian 32bit

我有一个 Debian 服务器 VPS,并且提供商安装了​​ 64 位 Debian 5。鉴于我只有 750 MB RAM,而且我听说变量在 64 位系统上占用更多 RAM,我是否应该要求安装 32 位?

phe*_*mer 16

简短的回答

在 64 位和 32 位软件中,变量不会占用两倍的空间。切换到 32 位操作系统的潜在内存增益将不值得付出努力。

长答案

数字可以更大,是的,但这并不意味着它们会更大。这也适用于数字,而不是字符串,并且字符串(通常)是应用程序中消耗最多内存的东西。

此外,许多应用程序明确指定了他们想要使用的数字的大小,如在 C 之类的语言中,int可以是任何大小,包括小于 32 位。更进一步,在我的 64 位 Linux 机器上,Cint是 32 位。因此,您必须明确请求long long获取 64 位数字。

所以基本上,应用程序不会因为它们是为 64 位编译而使用更多内存。

编辑
为了回应 Gilles 声称 64 位 Firefox 使用两倍的内存,我在我的系统上对 32 位和 64 位 Firefox 进行了比较。
我通过启动对http://acid3.acidtests.org/开放的 5 个选项卡进行了测试,并执行了 3 次测试(一次在 32 位,一次在 64 位,然后重复两次)。我选择这个网站是因为它是 JavaScript 密集型的,并且使用静态内容(页面的每次渲染都将提供相同的数据)。

在最后的运行中:

  • 32 位:173,244kb rss / 918,348kb virt

  • 64 位:184,588kb rss / 966,624kb virt

我可以做更广泛的测试,是的,但我认为这足以证明两者之间的大小差异很小。

  • @Gilles 我认为测试中存在一些缺陷。即使 firefox 将数据的最后一点点存储为整数(没有字符串,不会改变大小),并且每个整数从 32 位变为 64 位,大小最多也会加倍。没有解释它超过两倍。 (4认同)
  • 这被严重夸大了。有些程序在 64 位模式下确实占用几乎两倍的内存,这取决于它们处理的数据类型。我注意到 Firefox 和 Chrome 占用的内存甚至超过两倍(我从未调查过原因:代码大小?)。对于Apache,额外的内存消耗可能很小(但我没有测量)。 (2认同)
  • “数字可以更大,是的,但这并不意味着它们会更大。” - 但所有的指针现在肯定是 64 位的,而以前是 32 位的。 (2认同)

tom*_*wof 5

对于内存小于 4gig 的系统,我选择 32 位而不是 64 位安装。

64 位确实使用更多内存,由于它是指针的性质,对于普通 LAMP 安装,这会额外增加大约 10 到 50 兆字节。

在内存有限的系统上,例如 256meg,这可能是一个相当大的块。

从技术上讲,PAE 同样适用于 64gig,但是应用程序的可寻址空间在任何情况下仍然限于 4gig。因此,对于超过 4gig 的任何东西,建议使用 64 位来利用性能提升,尤其是与 PAE 开销相​​关的那些。

简而言之:<4gig = 32bit | >4gig = 64 位。