update on memory use from Joe Schafer, for your comments.




cvs diff -u -d perlfaq3.pod
Index: perlfaq3.pod
===================================================================
RCS file: /cvs/public/perlfaq/perlfaq3.pod,v
retrieving revision 1.21
diff -u -d -r1.21 perlfaq3.pod
--- perlfaq3.pod        28 Apr 2002 15:51:10 -0000      1.21
+++ perlfaq3.pod        28 Apr 2002 18:59:11 -0000
@@ -617,17 +617,14 @@
 
 =head2 How can I free an array or hash so my program shrinks?
 
-You can't.  On most operating systems, memory allocated to a program
-can never be returned to the system.  That's why long-running programs
-sometimes re-exec themselves.  Some operating systems (notably,
-FreeBSD and Linux) allegedly reclaim large chunks of memory that is no
-longer used, but it doesn't appear to happen with Perl (yet).  The Mac
-appears to be the only platform that will reliably (albeit, slowly)
-return memory to the OS.
-
-We've had reports that on Linux (Redhat 5.1) on Intel, C<undef
-$scalar> will return memory to the system, while on Solaris 2.6 it
-won't.  In general, try it yourself and see.
+You usually can't. On most operating systems, memory
+allocated to a program can never be returned to the system.
+That's why long-running programs sometimes re-exec
+themselves. Some operating systems (notably, systems that
+use mmap(2) for allocating large chunks of memory) can
+reclaim memory that is no longer used, but on such systems,
+perl must be configured and compiled to use the OS's malloc,
+not perl's.
 
 However, judicious use of my() on your variables will help make sure
 that they go out of scope so that Perl can free up that space for

Reply via email to