Почему мне удалось загрузить 4,19 ГБ памяти, когда `perl -V: ptrsize` вернул 4? - PullRequest
2 голосов
/ 27 мая 2020

У меня есть такой вывод:

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

Согласно этот ответ , ptrsize='4' означает, что perl может адресовать 4 ГБ памяти.

Однако при загрузке огромных объемов данных в память мне постоянно удавалось загрузить ровно 4190924 (4.19) до того, как вы столкнулись с ошибкой Out of memory .

Почему не вышло 4000000 (4 ГБ), как ожидалось?

Для полноты картины я проверил количество используемой памяти, запустив qx{ grep VmSize /proc/$$/status };

1 Ответ

4 голосов
/ 27 мая 2020

Предел для 32-битного указателя составляет 2 ^ 32 = 4294967296 байт, правильно выраженный как 4 ГиБ, но обычно называемый 4 ГБ. Это 4 194 304 КБ (единица, в которой сообщает VmSize). Вы пришли в пределах 4 КБ (одна страница в большинстве систем) от этого.

...