Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^3: memory "release" with $#=-1

by dave_the_m (Parson)
on Jun 28, 2005 at 12:15 UTC ( #470594=note: print w/ replies, xml ) Need Help??


in reply to Re^2: memory "release" with $#=-1
in thread memory "release" with $#=-1

my $a = []; $a->[$_] = $_ for 0..999; $#$a = 1; # frees up approx 16000 bytes undef @$a; # frees a further 4000 bytes undef $a; # frees a further 52 bytes
Note that this frees memory to the perl interpter, not to the OS. ie perl can reuse that memory when creating further data, but other processes can't

update: to clarify: just doing the undef $a on its own would free up all 20052 bytes too.

Dave.


Comment on Re^3: memory "release" with $#=-1
Download Code
Re^4: memory "release" with $#=-1
by ISAI student (Scribe) on Jun 28, 2005 at 14:01 UTC
    OK. That's great, I'll use it to free up memory. Thanks for all your help. -ISAI student
Re^4: memory "release" with $#=-1
by waswas-fng (Curate) on Jun 28, 2005 at 19:22 UTC
    One note though, if you create the array peicemail over time, then you may have smaller portions of memory allocated for the array that are not contiguous. In that case freeing the array and making a new array may not use the freed memory if the new array has larger malloc needs then the freed memory has contiguous memory segments.


    -Waswas
      I'm pretty sure perl arrays always take up a contiguous region of memory, at least for the actual "array" part. Then again, it's just an array of pointers to SV's anyways, so I'm not sure it matters.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://470594]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2014-08-27 11:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (237 votes), past polls