我在 Unix 上运行的 Perl/Tk 中存在大量泄漏问题。由于某些限制,我无法发布大部分代码,但我已经能够确定导致内存泄漏的原因并创建了一个具有相同症状的小程序。基本上,我正在运行一个 GUI,其中一个框架被破坏并定期重新填充。然而,这似乎会导致大量内存泄漏并不断增长。我以为销毁命令会清除内存中的所有痕迹,但似乎并非如此。我也不太熟悉 Perl 中的垃圾收集。该程序一次将运行数天或数周,因此内存泄漏并不理想。有没有人有任何想法来阻止内存泄漏?我仅限于使用 Perl,所以不幸的是我不能轻易地将代码移植到 Python 或其他东西上。
#!opt/project/COTS/bin/perl
use strict;
use warnings;
use Tk;
$Tk::mw = MainWindow->new;
$Tk::mw->repeat(10,\$build);
my $status;
&build;
sub build{
$status->destroy() if ($status);
$status = $Tk::mw->Frame->pack(-side => 'top');
my $left_frame = $status->Frame(
-relief =>'sunken',
-borderwidth => 1
)->pack(-side => 'left', -anchor => 'nw', -padx => 4, -pady => 5);
my $right_frame = $status->Frame(
-relief =>'sunken',
-borderwidth => 1
)->pack(-side => 'left', -anchor => 'nw', -padx => 4, -pady => 5);
}
MainLoop;