Tengo un código de 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
}
Noté el perl.exe
el proceso aumenta constantemente de tamaño (hasta 600 MB después de aproximadamente 2 millones de iteraciones de bucle). Si saco el HTML::TreeBuilder
Cosas, no aumenta en absoluto. ¿Hay algo que pueda hacer para tapar esta fuga?
Respuestas
0 para la respuesta № 1No puedo replicar esto con el siguiente script:
#!/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;
}
Dejé que este script se ejecutara durante minutos y el uso de la memoria (en el Administrador de tareas) se mantuvo entre 7,200K y 7,300K.
E: Inicio> perl -v Esto es Perl, v5.10.1 construido para MSWin32-x86-multi-thread (con 2 parches registrados, vea perl -V para más detalles) Copyright 1987-2009, Larry Wall Compilación binaria 1006 [291086] proporcionada por ActiveState http://www.ActiveState.com Construido el 24 de agosto de 2009 13:48:26
E: Inicio> perl -MHTML :: TreeBuilder -e "print $ HTML :: TreeBuilder :: VERSION" 3,23
E: Inicio> perl -MHTML :: FormatText -e "print $ HTML :: FormatText :: VERSION" 2.04