В PHP.ini стоит огрничение потребляемой памяти на "2000M"
Такой код
$startMemory = memory_get_usage();
$array = range(1, 33000000);
print_r($endMemory = memory_get_usage() - $startMemory);
print_r(round($endMemory / 1024 / 1024) . ' MB');
Выдает такой результат
1073746000
1024 MB
Если мы увеличиваем массив еще на 1 млн
$array = range(1, 34000000);
То результатом становится
PHP Fatal error: Allowed memory size of 2097152000 bytes exhausted (tried to allocate 2147483656 bytes)
То есть судя по ошибке, размер массива превысил 2000 МБ и составил 2048 МБ
Вопрос - как размер памяти, занимаемой массивом внезапно скакнул аж в 2 раза при добавлении всего 1 млн значений в 33-миллионный массив ?
Функция memory_get_usage() неверно определяет кол-во занимаемой памяти ?