Я пытаюсь отследить утечку памяти в программе PHP (Magento, если это имеет значение).Основная проблема - утечка в каком-то объекте / классе, которая со временем растет.То есть, чем больше информации будет занесено в базу данных, тем больше памяти будут использовать определенные процессы приложения.Magento - это очень абстрактная система, поэтому не всегда понятно, какой код запускается и потребляет так много памяти.Вот что я пытаюсь отследить.
Я использовал memory_get_peak_usage
в конце файла начальной загрузки программы для оценки производительности и наблюдал устойчивый рост от 250 МБ пиковой нагрузки до 310 МБпиковое использование примерно через неделю.Я хотел бы использовать memory_get_peak_usage
с перерывами в течение цикла выполнения, чтобы спросить
Каково было максимальное использование до этого вызова?[позже в цикле] Каково было максимальное использование до этого нового вызова?
Проблема, с которой я сталкиваюсь, состоит в том, что, как только я вызову memory_get_peak_usage
один раз, любой будущий вызов возвращает то же значениекак первый звонок, даже когда я знаю, что пиковое использование изменилось.Это приводит меня к мысли, что после однократного вызова memory_get_peak_usage
PHP кэширует результат.Я хотел бы распаковать его, чтобы выполнить тестирование, описанное выше.
Могу ли я позвонить memory_get_peak_usage
несколько раз?
Есть ли альтернативапрофилирование сценария, который я описал выше.Может, какая-то особенность xDebug?