Задать вопрос
Nikolino
@Nikolino

Как происходит выделение памяти?

Всегда считал, что при создании новой переменной выделение памяти должно расти, но этот код:

echo memory_get_usage()."\n";
$a = "Иванов";
echo memory_get_usage()."\n";
$b = "Петров";
echo memory_get_usage()."\n";
$c = "Сидоров";
echo memory_get_usage()."\n";
$test = range(1, 1024);
echo memory_get_usage()."\n";


показывает такие результаты:
355512
355544
355544
355544
392464

Почему выделение памяти не увеличивается после создания каждой переменной со строкой? А после создания массива увеличивается?
Ожидал увидеть что-то вроде:
355512
355544
355913
356321
392464
  • Вопрос задан
  • 239 просмотров
Подписаться 3 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Память выделяется блоками с некоторым минимальным размером. При создании переменной $a было выделено 32 байта. В сумме переменные $a, $b и $c занимают 22 байта, с выравниванием - 24 байта. Соответственно, дополнительной памяти под них не требовалось.
При создании массива память была запрошена, скорее всего, не только под сам массив, но и для подгрузки функции range.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Память запрашивается когда ее становится мало, и с некоторым запасом, чтобы не просить ее при каждой операции, это добавляло бы тормоза.

Изначально ее выделяется с запасом, часто даже скрипт отрабатывает и ни разу не увеличивает память под себя, а так можете попробовать memory_get_usage(1) там вообще будет стабильно 2 мегабайта, если что-то жрущее не запустить, то скрипт не запросит даже памяти себе еще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽