Утечка памяти в HTML::TreeBuilder
У меня есть некоторый код Perl:
use HTML::Parse;
use HTML::FormatText;
# ...
my $txtFormatter = HTML::FormatText->new();
while ( ... ) { # some condition
my $txt = # get from a file
my $html_tree = HTML::TreeBuilder->new_from_content($txt);
$txt = $txtFormatter->format($html_tree);
$html_tree->delete();
# write $txt to a file
}
Я заметил perl.exe
процесс неуклонно увеличивается в размере (до 600 МБ после примерно 2 миллионов итераций цикла). Если я достану HTML::TreeBuilder
вещи, это не увеличивается вообще. Могу ли я что-нибудь сделать, чтобы устранить эту утечку?
1 ответ
Я не могу повторить это с помощью следующего скрипта:
#!/usr/bin/perl
use strict; use warnings;
use File::Slurp;
use HTML::FormatText;
use HTML::TreeBuilder;
my $formatter = HTML::FormatText->new;
my $html = read_file 'test.html';
while ( 1 ) {
my $tree = HTML::TreeBuilder->new_from_content( $html );
$formatter->format( $tree );
$tree->delete;
}
Я позволил этому сценарию работать в течение нескольких минут, а использование памяти (в диспетчере задач) оставалось между 7200 и 7300 КБ.
E: \ Home> perl -v Это Perl, v5.10.1 построен для MSWin32-x86-многопоточность (с 2 зарегистрированными патчами, смотрите perl -V для более подробной информации) Copyright 1987-2009, Ларри Уолл Двоичная сборка 1006 [291086] предоставлена ActiveState http://www.ActiveState.com Год постройки 24 авг 2009 13:48:26
E: \ Home> perl -MHTML:: TreeBuilder -e "напечатать $HTML::TreeBuilder::VERSION" 3,23
E: \ Home> perl -MHTML:: FormatText -e "напечатать $HTML::FormatText::VERSION" 2,04