in reply to Re^3: Memory management with long running scripts
in thread Memory management with long running scripts
Interesting. FWIW, on Windows 7 (monitoring with Task Manager) and running Strawberry 5.14.2.1, the program below will release (very) roughly half of the allocated memory when the undef $s is done. If the undef statement is changed to $s = ''; nothing is deallocated.
Half?!? What this means I do not know. (But see Update2 below.)
>perl -wMstrict -le "my $s = '.' x 500_000_000; sleep 5; undef $s; sleep 10; "
Update: Same results with Strawberry 5.10.1.5.
Update2: Actually, I think I understand a little of what is going on. From the Task Manager memory stats, when the '.' x 500_000_000 expression of the my $s = '.' x 500_000_000; statement executes, it consumes about 500M to build the string. The string is then copied to the $s scalar, thus consuming another 500M, for a total of 1G. It appears the first 500M (used to build the string) is never deallocated. Only the memory consumed by the $s scalar is deallocated when it is undef-ed.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Memory management with long running scripts
by BrowserUk (Patriarch) on Jul 22, 2012 at 01:34 UTC | |
by AnomalousMonk (Archbishop) on Jul 22, 2012 at 01:45 UTC | |
|
Re^5: Memory management with long running scripts
by bulk88 (Priest) on Jul 22, 2012 at 00:36 UTC | |
by AnomalousMonk (Archbishop) on Jul 22, 2012 at 01:33 UTC |