почему нет пилообразной формы в статистике использования памяти? - PullRequest
0 голосов
/ 02 сентября 2018

Недавно я провел такой эксперимент - новые объекты постоянно появляются в непрерывном цикле без сохранения каких-либо ссылок на них, поэтому они должны быть уничтожены сборщиком мусора в ближайший подходящий момент. Единственная особенность состоит в том, что объекты очень велики с точки зрения использования памяти - один объект содержит массив из 70 миллионов элементов. Это код:

class Temp {
    private $data;

    function __construct() {
        $this->data = range(1,70000000);
    }
}

while (true) {
    new Temp();
}

Я был очень удивлен, что в графике использования памяти нет типичного поведения сборщика мусора. Вот оно (70 миллионов элементов в массиве):

enter image description here

Вопрос - где пилообразная ?

Мое лучшее предположение заключается в том, что процессы выделения и сбора объектов начинают работать одновременно или что-то еще происходит здесь.

РЕДАКТ. 1:

Когда количество элементов в массиве уменьшается до 60 миллионов - я получаю Пилообразное поведение ГХ, как и ожидалось (60 миллионов элементов в массиве): enter image description here

РЕДАКТИРОВАТЬ 2:

В случае, если количество элементов в массиве увеличено (90 миллионов элементов в массиве) - я получаю обратный пилообразный график! : enter image description here

Похоже, что тест с 70 миллионами элементов - это грань между этими двумя различными формами пилообразной формы. Но причины этого мне неясны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...