当 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 answer,ptrsize='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(一页,在大多数系统上)之内。
我有这个输出:
root@hostname:/home/admin# perl -V:ptrsize
ptrsize='4';
根据this answer,ptrsize='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(一页,在大多数系统上)之内。