Amount of virtual Memory larger than heap peak

Johannes Singler singler@ira.uka.de
Fri Sep 12 14:55:00 GMT 2008


Hi!

My program allocates and deallocates large chunks (Megabytes) of memory 
many times (using new[], but this should be mapped to malloc).  For 
example, using memusage.sh, I find out that the heap peak is about 
100MB.  However, the virtual memory size of my program has grown to 
about twice this size, as shown by top.  The resident set size stays at 
about 100MB, as expected.

The growth of virtual memory is a problem since the program should run 
in an environment where virtual memory is limited using ulimit.  Running 
the program with larger data sets increases virtual memory usage 
linearly, so it's not just a constant addition (the program itself has 
less than 10MB).

I don't use mmap, but read and write large amounts of data from disk 
using read(int fd, void *buf, size_t count) and the corresponding write.

Can anybody explain this behavior? How can I reduce virtual memory usage?

        Johannes



More information about the Libc-help mailing list