Re: Memory Leak?

[email protected] (Jason E. Stewart)
Newsgroups gmane.text.xml.xerces-p.devel
Message-ID <[email protected]>
Chris Cheung <[email protected]> writes:

>   I need to use Xerces-Perl to repeatedly
>  
>     - parse XML to DOM tree
>     - manipulate the DOM tree
>     - pretty-print the DOM tree
> 
> It seems that serious memory leak occurs. I do not hold any reference to 
> the Perl Xerces object used in the programme and hence the Perl objects 
> should be DESTROYed after use, but memory usage keeps on increasing as 
> reported by the OS.

Hi Chris,

So I think I've solved this. First use DOMBuilder, and second ensure
that resetDocumentPool() gets called after you are finished with the
DOM tree. Here's some code stolen from my memtest.pl:

my $impl = XML::Xerces::DOMImplementationRegistry::getDOMImplementation('LS');
my $parser = $impl->createDOMBuilder($XML::Xerces::DOMImplementationLS::MODE_SYNCHRONOUS,'');


sub validate_builder {
  my $xml = shift ;
  my $parser = shift;

  eval {
    $parser->setFeature("$XML::Xerces::XMLUni::fgDOMNamespaces", $namespace) ;
    $parser->setFeature("$XML::Xerces::XMLUni::fgXercesSchema", $schema) ;
    $parser->setFeature("$XML::Xerces::XMLUni::fgXercesSchemaFullChecking", $schema) ;
#    $parser->setFeature("http://apache.org/xml/features/validation-error-as-fatal", $validate) ;
  };
  XML::Xerces::error($@) if $@;


  eval {
    $parser->setFeature("$XML::Xerces::XMLUni::fgDOMValidation", $validate) ;
#    $parser->setFeature("$XML::Xerces::XMLUni::fgDOMValidateIfSchema", 0) ;
  };
  XML::Xerces::error($@) if $@;

  eval {
    # my $is = XML::Xerces::MemBufInputSource->new($xml);
    # my $is = XML::Xerces::LocalFileInputSource->new($OPTIONS{file});
    $parser->parseURI($OPTIONS{file}) ;
  } ;
  XML::Xerces::error($@) if $@;
  $parser->resetDocumentPool();
}

Using this code I'm not getting any perceptable leaks with 2.3.0-4.

Let me know if this helps,
jas.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.