This is the mail archive of the
mailing list for the glibc project.
Amount of virtual Memory larger than heap peak
- From: Johannes Singler <singler at ira dot uka dot de>
- To: libc-help at sourceware dot org
- Date: Fri, 12 Sep 2008 16:54:27 +0200
- Subject: Amount of virtual Memory larger than heap peak
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?