我有守護程序和perl上的子項。爲了守護進程我使用Proc::Daemon
。控制守護進程和連接到DB的子進程(DBI
lib),孩子們也通過imap(Mail::IMAPClient
庫)收集郵件。 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
庫。在remote_imap.pl usleep(100000)
,在remote_imapd.pl
- usleep(500000)
。
爲什麼不釋放內存,因爲我爲所有變量(除了id_connet到DB)做了andef
?如果你想,我會添加代碼。
主要守護 remote_imap.pl 兒童 remote_imapd.pl
添加*最小*代碼足以重現問題。 – 2014-12-19 11:29:57
Yup需要看到代碼才能理解首先分配內存的位置。 – 2014-12-19 11:30:51
我添加超鏈接 – user3751471 2014-12-19 11:37:36