[Spread-users] Memory leak? FD leak? Other?

John Schultz jschultz at spreadconcepts.com
Fri Aug 20 17:43:55 EDT 2004


David Shaw wrote:
> 
> This isn't true for all platforms.  With glibc (i.e. virtually all
> Linux systems), if you free a memory block, glibc may shrink your
> heap, giving memory back to the OS.  The OpenBSD libc does the same.
> It all depends on a number of factors and platform-specific things,
> and fragmentation can make this difficult, but glibc neatly hides all
> this from the application.  Some memory allocators even do things like
> mmap-ing /dev/zero and thus make it dead easy to release memory back
> to the system.
> 
Generic memory managers can try to release pages, but memory 
fragmentation usually makes this *very* difficult except when large 
block allocations are released.

> My point is that in general, it's not a good idea to try and outsmart
> the OS here.  When you want memory, malloc() it.  When you are done
> with it, free() it.  Let the memory allocator do its job.
> 
> It's okay to keep some memory around if you are concerned about malloc
> being too slow or other reasons, but then you really need to cap your
> personal memory pool at some sane value so that a one-time spike in
> memory usage doesn't result in your process permanently owning most of
> the memory on the system (and thus preventing other processes from
> doing something useful with it).
> 
I'm pretty sure this is what Spread does, but Jonathan can fill us in if 
I'm wrong.

-- 
John Lane Schultz
Spread Concepts LLC
Phn: 443 838 2200






More information about the Spread-users mailing list