Messages in this thread |  | | Date | Tue, 28 Jan 1997 11:08:20 -0500 (EST) | From | "Adam D. Bradley" <> | Subject | Re: Memory use: returning freed memory to the pool |
| |
> I may be a bit slow witted, but there is something I don't > understand about memory management: why doesn't the size of my > process decrease when I free allocated memory ? > > To explain, I've included the program below: this allocates 10 Megs > (roughly), writes to this memory, to make sure it is actually > there, then frees it, and goes to sleep for 24 hours. > > When I run this, and monitor the process size using top, I see that > the size of the process stays at 10 Megs: the freed memory is not > returned to the operating system. [snip]
This is, methinks, a libc problem...malloc() will (when necessary) aquire a heap of memory w/ a system call, then allocate segments within that heap; free() marks those sections of the heap "de-allocated", but does not return it to the OS until the program exits.
There are potential performance hits if free() automatically does a "hard-release" (correct me if I'm wrong), particularly for string-intensive and similar applications that are constantly allocating and freeing substantial amounts of memory.
> - Is there anyway, in which I can force my process to return the > memory to the operating system, in such a way that Linux can > recycle this memory ? ( I only need it when starting my process, > after init I can throw it out).
mallopt() provides a mechanism for "tuning" the behavior of the malloc function set...of course, my DU4.0 man pages say "it's no longer supported by us, don't use it", and I can't hit any Linux man pages from here :-P
Adam -- He feeds on ashes; a deluded mind has led him Adam Bradley, UNCA Senior astray, and he cannot deliver himself or say, Computer Science "Is there not a lie in my right hand?" Isaiah 44:20 bradley@cs.unca.edu http://www.cs.unca.edu/~bradley <><
|  |