调用g_hash_table_destroy()时,它是否释放缓冲区内存

时间:2015-03-23 10:17:06

标签: c linux data-structures hashtable ubuntu-14.04

使用GHashTable将键,值对插入表中,然后使用g_hash_table_destroy()函数销毁表,这两个都在循环中发生。但是我这样做是在观察正在使用的缓冲区/缓存。正在进行插入时,内存(可用缓冲区/高速缓存内存)正在减少,但是当破坏工作时,反之亦然没有被反射。

1 个答案:

答案 0 :(得分:0)

您可能误解了应用程序如何释放内存。典型的实现是应用程序不会将内存返回给操作系统;相反,内存只是标记为未分配并用于将来的malloc()调用。因此,如果您调用allocate一个大块,用数据填充它并调用free(),则无法保证free()调用将内存返回给操作系统。

无论如何,“free -m”不是监视空闲内存的最佳方式。可用内存简单地浪费了内存,而智能操作系统使用的内存可以更好地用于更好的目的,例如在内存中缓存磁盘文件。可用内存的最佳值尽可能低。