Инструменты/Методы для отладки утечек памяти/Ошибок использования в PHP


У меня есть скрипт командной строки, который запускает array() файлов через цикл и использует имя файла в качестве аргумента для вызова метода вспомогательного объекта.

Каждый запуск скрипта, PHPmemory_get_usage сообщает все большее и большее число

53294264
57019624
61374624
65699176
70230600
75157152
79900392
84630472
89359264
94300016
100031176
105202448
110360808
115777528
121146976
126784824
132366952

Пока я не ошибусь с

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted

Ясно, что что-то происходит с утечкой памяти или продолжает добавляться какая-то глобальная/статическая область хранения. Каков наилучший способ отладки такого рода ошибок в PHP? Здесь распространенные ситуации, когда это происходит непреднамеренно в PHP? Есть ли у xDebug какие-то волшебные опции, которые могут помочь мне точно определить это? Другие инструменты?

Лучшее, что я придумал, - это следовать цепочке выполнения и засорять базу кода вызовами memory_get_usage(), пока я не определю точную проблему, но это кажется утомительным и неэффективным подходом.

Author: Alan Storm, 2010-07-28

1 answers

Похоже, что Facebook xhprof обеспечивает профилирование памяти на уровне вызова функции.

(Я никогда им не пользовался, но очень хочу...)

 5
Author: Charles, 2010-07-28 01:53:31