in reply to Does undef free ram?
Here is a little script for linux only that can help to understand what happens to memory:
If I use @test = ();, output is
and with undef @test;
Of course, this example is OS dependant. But you can notice that the first solution does not free any OS memory at all. As FatVamp said, Perl can then reuse the memory. It can be noticed that a few more memory is freed when using undef, but not all that was used.
HTH
--
zejames
our @test; print "nothing : Size = ".size()."\n"; push @test, rand for (1..100000); print "push : Size = ".size()."\n"; #undef @test; @test = (); print "deleted : Size = ".size()."\n"; sub size { open DATA, "< /proc/$$/status" or die "Unable to read data : $!\n"; local $/; <DATA> =~ m/^VmSize:\s+(.*?)$/m; return $1; }
If I use @test = ();, output is
nothing : Size = 2988 kB push : Size = 5492 kB deleted : Size = 5492 kB
and with undef @test;
nothing : Size = 2988 kB push : Size = 5488 kB deleted : Size = 4976 kB
Of course, this example is OS dependant. But you can notice that the first solution does not free any OS memory at all. As FatVamp said, Perl can then reuse the memory. It can be noticed that a few more memory is freed when using undef, but not all that was used.
HTH
--
zejames
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Does undef free ram?
by dada (Chaplain) on Jul 18, 2002 at 10:26 UTC |
In Section
Seekers of Perl Wisdom