当 perl -V:ptrsize 返回 4 时,为什么我能够加载 4.19 GB 的内存?

Why was I able to load 4.19 GB of memory when `perl -V:ptrsize` returned 4?

我有这个输出:

root@hostname:/home/admin# perl -V:ptrsize
ptrsize='4';

根据this answerptrsize='4'表示perl能够寻址4GB内存。

然而,在将大量数据加载到内存中时,我始终能够在遇到 内存不足 错误之前准确加载 4190924 (4.19)。

为什么它没有像预期的那样在 4000000 (4GB) 时失败?

为了完整起见,我检查了 运行 qx{ grep VmSize /proc/$$/status };

使用的内存量

32 位指针的限制是 2^32 = 4,294,967,296 字节,正确表示为 4 GiB,但通常称为 4GB。这是 4,194,304 kiB(VmSize 报告的单位)。你在 4kiB(一页,在大多数系统上)之内。