我有一个长时间运行的应用程序,需要频繁的内存分配和释放。任何malloc
实现是否会将释放的内存返回给系统?
在这方面,以下是每个库的行为:
- ptmalloc 1、2(glibc默认)或3
- dlmalloc
- tcmalloc(谷歌线程malloc)
- Solaris 10-11默认的malloc和mtmalloc
- FreeBSD 8默认的malloc(jemalloc)
- Hoard malloc
更新
如果我的应用程序在白天和晚上(例如)的内存消耗可能非常不同,我是否可以强制任何malloc
返回已释放的内存到系统?
如果没有这样的返回,释放的内存将被交换出去并多次交换回来,但此类内存仅包含垃圾。