Почему этот простой скрипт php пропускает память?

В надежде избежать будущих утечек памяти в php-программах (модули drupal и т. Д.) Я возился с простыми php-скриптами, которые пропускают память.

Может ли эксперт php помочь мне выяснить, что из-за этого скрипта постоянно увеличивает использование памяти?

Попробуйте запустить его самостоятельно, меняя различные параметры. Результаты интересные. Вот:

<?php

function memstat() {
  print "current memory usage: ". memory_get_usage() . "\n";
}

function waste_lots_of_memory($iters) {
  $i = 0;
  $object = new StdClass;
  for (;$i < $iters; $i++) {
    $object->{"member_" . $i} = array("blah blah blha" => 12345);
    $object->{"membersonly_" . $i} = new StdClass;
    $object->{"onlymember"} = array("blah blah blha" => 12345);
  }
  unset($object);
}

function waste_a_little_less_memory($iters) {
  $i = 0;
  $object = new StdClass;
  for (;$i < $iters; $i++) {

    $object->{"member_" . $i} = array("blah blah blha" => 12345);
    $object->{"membersonly_" . $i} = new StdClass;
    $object->{"onlymember"} = array("blah blah blha" => 12345);

    unset($object->{"membersonly_". $i});
    unset($object->{"member_" . $i});
    unset($object->{"onlymember"});

  }
  unset($object);
}

memstat();

waste_a_little_less_memory(1000000);

memstat();

waste_lots_of_memory(10000);

memstat();

Для меня вывод:

current memory usage: 73308
current memory usage: 74996
current memory usage: 506676

[отредактировано, чтобы удалить больше членов объекта]

Ответы на вопрос(6)

Ваш ответ на вопрос