У меня есть демон с детьми на perl. Для daemonize я использую Proc::Daemon
. Демона управления и детей, подключенных к БД (DBI
lib), дети собирают почту через imap (Mail::IMAPClient
lib) тоже. I undef
все переменные в коде детей, но со временем ребенок, который работает больше, чем кто-либо, потребляет много памяти. ps
выход:Как освободить память в Perl
user 16521 0.6 1.6 135560 16516 ? S 10:47 0:54 perl remote_imap.pl
user 16523 0.2 20.0 331976 201764 ? S 10:47 0:21 perl remote_imapd.pl 16521
user 16525 0.1 3.0 157792 30720 ? S 10:47 0:09 perl remote_imapd.pl 16521
user 16527 0.1 3.0 157796 30704 ? S 10:47 0:08 perl remote_imapd.pl 16521
user 16529 0.1 3.0 157796 30572 ? S 10:47 0:09 perl remote_imapd.pl 16521
user 16531 0.1 3.0 157792 30612 ? S 10:47 0:08 perl remote_imapd.pl 16521
для сна я использую usleep
из Time::HiRes
Lib. В remote_imap.pl usleep(100000)
, In remote_imapd.pl
- usleep(500000)
.
Почему память не отпущена, потому что я сделал andef
для всех переменных (кроме id_connet для DB)? Если хочешь, я добавлю код.
Главный демон remote_imap.pl Детского remote_imapd.pl
добавить * минимальный * код, которого достаточно, чтобы воспроизвести проблему. –
Yup нужно будет увидеть код, чтобы понять, где выделяется память. –
Я добавляю гиперссылки – user3751471