我使用free内存有关3G,然后使用malloc_trim(0)将堆内存返回到系统,并使用top查看驻留内存的使用情况。但常驻记忆并没有减少。这些内存每次都是malloc()编辑的,因为54K比128K小。并采用malloc()进行brk()系统调用。
发布于 2016-12-21 05:12:16
据它的文档称,
malloc_trim()函数尝试在堆顶部释放空闲内存。
(强调后加)。
它不能释放在堆上分配内存的内存,因此不能保证向系统返回任何内容。我倾向于认为,您想要释放的内存中,很少(如果有的话)位于堆的顶端,尽管内存也可能不是实际空闲的。
还请注意,malloc_trim()是一个GNU扩展。
https://stackoverflow.com/questions/41255305
复制相似问题