2

私はいくつかの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(200 万回程度のループ反復後に最大 600 MB まで)。物を出してHTML::TreeBuilderも全然増えません。この漏れを塞ぐために私にできることはありますか?

4

1 に答える 1

0

次のスクリプトではこれを複製できません。

#!/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;
}

このスクリプトを数分間実行したところ、(タスク マネージャーでの) メモリ使用量は 7,200K ~ 7,300K のままでした。

E:\Home> perl -v

これは、MSWin32-x86-multi-thread 用にビルドされた v5.10.1 の perl です。
(2 つのパッチが登録されています。詳細については、perl -V を参照してください)

Copyright 1987-2009、ラリー・ウォール

ActiveState http://www.ActiveState.com が提供するバイナリ ビルド 1006 [291086]
2009 年 8 月 24 日 13:48:26 に構築
E:\Home> perl -MHTML::TreeBuilder -e "print $HTML::TreeBuilder::VERSION"
3.23
E:\Home> perl -MHTML::FormatText -e "print $HTML::FormatText::VERSION"
2.04
于 2010-08-05T21:46:30.077 に答える