Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: How can I free the memory of a XML::Simple-Object

by bulk88 (Priest)
on Oct 27, 2012 at 03:17 UTC ( #1001153=note: print w/replies, xml ) Need Help??

in reply to How can I free the memory of a XML::Simple-Object

" eval 'no XML::Simple';" that probably did nothing. XML::Simple probably does not have or inherit an unimport sub. You can always ->import() ->unimport() any package and it will always "work", because of a special exception in the interp for those 2 method calls.
CProcess->PrintProcessInfo("perl.exe"); eval 'use XML::Simple'; CProcess->PrintProcessInfo("perl.exe"); { my $xs = new XML::Simple(); my $root= $xs->XMLin('D:\xTools\test\xmltest.xml'); CProcess->PrintProcessInfo("perl.exe"); undef $root; undef $xs; } CProcess->PrintProcessInfo("perl.exe");
Try that. Perl will always destroy at a scope boundary/change. Reassigning may or may not trigger a DESTROY (I don't exactly).

If you are desperate on memory you can try Symbol's delete_package and/or unloading XS modules (I'm not describing how to do that at the moment). Neither (delete_package/unloading an XS module) are guaranteed to free all memory. With a Perl that old, there are probably leaks that you can't fix without a newer version of Perl.

I also see "Threads 3", are you using ithreads? On a Perl that old they are alpha.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001153]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2017-07-25 01:40 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (362 votes). Check out past polls.