Понимание увеличения дельты памяти Xdebug - PullRequest
0 голосов
/ 11 января 2012

В моем файле трассировки есть следующая строка:

0.5927  12212144    2780040.00  ->  require_once(E:\web\lib\nusoap\nusoap.php)  E:\web\some_path\file.php:28

Я знаю, что этот файл будет стоить 2,7 МБ памяти. Это нормально, что простое требование файла будет стоить так дорого? Что влияет на стоимость памяти при запросе файла?

У меня есть еще 13 необходимых строк, каждая из которых стоит не менее 350 000 КБ памяти. У меня есть еще две строки, которые стоят 1 МБ каждая. Опять же, это нормально?

Редактировать # 1:

Я начал изучать это из-за утечки памяти. У нас есть сценарий, который будет иметь всплеск использования памяти, но когда он уменьшится, объем оперативной памяти увеличится на 10 МБ +.

В какой-то момент, когда Apache достигает 450 000 МБ, мы начинаем получать ошибки памяти, подобные этим:

PHP Fatal error: Out of memory (allocated x) (tried to allocate y bytes) in/path_to/file.php(1758) on line z

Ответы [ 2 ]

1 голос
/ 11 января 2012

Да.Это вполне нормально.Библиотека nusoap довольно большая, но внутри PHP она хранится в виде раздутого двоичного представления.Вы должны понимать, что сам запрос требует не места, а включенного файла.

Я не совсем понимаю, откуда взялся ваш ".00" в конце.Я только что проверил код, и он не создает число с плавающей запятой.

ура, Дерик

0 голосов
/ 11 января 2012

Опять же, это нормально?

Да, это нормально. Если вы хотите понять дельту, посмотрите на исходный код xdebug, который объясняет это довольно хорошо. Также сначала прочтите документацию по xdebug, на сайте IIRC сказано, что вы не должны принимать эти цифры по-настоящему (и, похоже, в вашем вопросе вы так или иначе).

Также позаботьтесь о том, чтобы xdebug не для производственного использования. Если вам нужно использовать производственную память, вам нужны другие инструменты.

...