Утечка памяти
Re: Утечка памяти
делал как-то жирную крон-команду-парсер, сохранявшую результаты в AR-модели. Минут через 20-30 работы скрипт умирал с недостатком памяти.
Начал применять все практики, описанные здесь и вообще все, что можно. Скрипт все равно умирал.
Переписал на ДАО - ноль реакции.
В итоге просто стал убивать регулярно и перезапускать.
Остается полагаться только на родной сборщик мусора.
Начал применять все практики, описанные здесь и вообще все, что можно. Скрипт все равно умирал.
Переписал на ДАО - ноль реакции.
В итоге просто стал убивать регулярно и перезапускать.
Остается полагаться только на родной сборщик мусора.
Re: Утечка памяти
Поэтому я и написал последнее предложение про фреймворк, возможно там что-то не обнуляется через unset, надо проверять. В полне возможно, что где-то остаются ссылающиеся ссылки, которые php не удаляет, хотя вы ему и указываете.vismut писал(а):Пример с простым объектом не актуален)astronin писал(а):в принципе unset очищает память практически полностью, оставляя какие-то крохи байт где-то на поддерживающие механизмы (проверил на 5.5)
запустил в цикле $object = new SomeClass(); unset($object); память вообще ни как не растет по ходу цикла
кстати, присвоение null вообще ни как не помогает, хотя в предыдущих версиях может и помогала...
наверное вам стоит проверить свое приложение, и большая утечка где-то еще
может быть даже фреймворк где-то сжирает, тут вам уже надо пошагово проверять увеличение помяти в кодах фреймворка...
Лучше сделайте так и скажите что тоже не растет)Если и так у вас не будет отжирать память, тогда действительно странно)Код: Выделить всё
//Создаем объект ActiveRecord $object = SomeModel::findOne(1); //Удаляем объект из памяти unset($object);
В общем надо провести небольшое иследование кода, что стоит за findOne(). Перед этим почитав http://php.net/manual/ru/features.gc.php
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Утечка памяти
Не забывай, создавая объект АР, создается еще Query, Db, Schema и много еще чего, что не удаляется при удалении объекта АР, а кешируется для следующих экземпляров.shamyyl писал(а)://Создаем объект ActiveRecord
$mailer = Mailer::findOne(20);
Можно попробовать, замерить разницу памяти, между созданием и удалением второго экземпляра.
Жду Yii 3!
Re: Утечка памяти
проблема в том состоит, что foreach-ем доставали данные пачками по 100, и работали с каждой записью, в итоге происходило переполнение памяти. каждый созданый экземпляр AR жрет память..slavcodev писал(а):Не забывай, создавая объект АР, создается еще Query, Db, Schema и много еще чего, что не удаляется при удалении объекта АР, а кешируется для следующих экземпляров.shamyyl писал(а)://Создаем объект ActiveRecord
$mailer = Mailer::findOne(20);
Можно попробовать, замерить разницу памяти, между созданием и удалением второго экземпляра.
Re: Утечка памяти
ну достаньте 2 записи для тестов, какая разница. должны же разобраться, что именно не умирает и, что еще интересней, не перезаписывается а добавляется
каждый и будет жрать...
каждый и будет жрать...
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Утечка памяти
Возможно будут полезны эти два метода
https://github.com/yiisoft/yii2/blob/ma ... #L139:L208
https://github.com/yiisoft/yii2/blob/ma ... #L139:L208
Жду Yii 3!
Re: Утечка памяти
чуть выше пишет, что пачками и получал данныеslavcodev писал(а):Возможно будут полезны эти два метода
https://github.com/yiisoft/yii2/blob/ma ... #L139:L208
Re: Утечка памяти
Здравствуйте!zelenin писал(а): ↑2015.01.16, 11:52 делал как-то жирную крон-команду-парсер, сохранявшую результаты в AR-модели. Минут через 20-30 работы скрипт умирал с недостатком памяти.
Начал применять все практики, описанные здесь и вообще все, что можно. Скрипт все равно умирал.
Переписал на ДАО - ноль реакции.
В итоге просто стал убивать регулярно и перезапускать.
Остается полагаться только на родной сборщик мусора.
У меня очень схожая проблема.
Скажите, а что за шесть лет проблема с нарастанием памяти у процессов httpd либо php-cgi.exe так не решена?
2021 год на дворе уже....