[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как создать и обнаружить утечку памяти в PHP
Страницы: 1, 2
c-alex
Цитата (killer8080 @ 3.07.2013 - 09:48)
Цитата (MiksIr @ 2.07.2013 - 22:06)
На PHP утечку памяти в классическом ее смысле получить очень трудно, ибо интерпретатор языка внимательно следит за этим. Особо начиная с 5.3.

утечку памяти получить легко, этим славится create_function ;)

ok, спасибо за совет. Я выполнил такой код:

while(true)
{
$var = create_function('', '$a = 0;');
unset($var);
}
unset($i);


в результате получаю:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6144 bytes) in D:\www\tst\mleak.php(5) : runtime-created function on line 1

после аварийного завершения скрипта память возвращается операционной системе, процесс HTTPD.EXE (Apache) занимает столько же памяти сколько и до запуска скрипта (иногда и меньше).

Вопрос: Как создать утечку памяти чтобы Apache занимал памяти с каждым выполнением скрипта все больше и больше и не отдавал эту память операционной системе? Ведь это и есть самый страшный вариант утечки памяти?

Есть проект, обычный сайт - memory_get_peak_usage() показывает максимум 2,5 мб при загрузке страницы. Этот сайт после определенного времени работы потребляет всю память (2GB).
Пытаюсь с этим разобраться.
glock18
Цитата (c-alex @ 4.07.2013 - 18:22)
Вопрос: Как создать утечку памяти чтобы Apache занимал памяти с каждым выполнением скрипта все больше и больше и не отдавал эту память операционной системе? Ведь это и есть самый страшный вариант утечки памяти?


не завершайте скрипт. Если это будет демон, то так и будет
Guest
Цитата (c-alex @ 4.07.2013 - 22:22)
Как создать утечку памяти чтобы Apache занимал памяти с каждым выполнением скрипта все больше и больше и не отдавал эту память операционной системе? Ведь это и есть самый страшный вариант утечки памяти?

Никак.
Даже если скрипт будет постоянно висеть в памяти, более memory_limit он не съест.
glock18
Цитата (Guest @ 5.07.2013 - 06:06)
Даже если скрипт будет постоянно висеть в памяти, более memory_limit он не съест.

ммм... то есть вас не смутит если простой демон со временем сожрет, скажем, 1 гиг памяти, а затем отвалится. То есть не свидетельство утечек памяти? smile.gif
Guest
Цитата (glock18 @ 5.07.2013 - 10:09)
а затем отвалится

Когда он отвалится вся память вернется системе.
Цитата (glock18 @ 5.07.2013 - 10:09)
То есть не свидетельство утечек памяти?

Зависит от скрипта.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.