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

问题描述 投票:0回答:1

我有此输出:

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

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

但是,当将大量数据加载到内存中时,在遇到Out of memory错误之前,我始终能够准确加载4190924(4.19)。

为什么它在4000000(4GB)下没有失败?

为了完整起见,我检查了通过运行qx{ grep VmSize /proc/$$/status };使用的内存量

perl unix memory out-of-memory 32-bit
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.