I'm seeing some weird things happening with MaxMemFree directive (http://httpd.apache.org/docs-2.0/mod/mpm_common.html#maxmemfree). The docs say that this directive specifies the number of kilobytes after which the memory is returned back to the system, but I found evidence to the contrary:
On start-up, the size of my Apache process is 20 MB (so large because of mod_perl and many preloaded Perl modules). An output filter allocates about 7 MB. When MaxMemFree is set to either 1024 (supposedly 1 MB) or 10, the memory is not freed. When it is set to 1, 2, or 4, the memory is freed and the process is back to 20 MB. When it's set to 5 or 6, the memory is not freed. The question is, is it really kilobytes, megabytes, or something else? The code is quite complex, and I was not able to trace it all the way and figure out exactly what is going on. I tested this with 2.0.43 and 2.0.45; the filter uses f->r->pool. Thanks, - Dmitri.