Утечка памяти в 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
Другие вопросы по тегам