【发布时间】:2015-03-23 10:17:06
【问题描述】:
我正在使用 GHashTable 将键值对插入表中,然后想要销毁表,使用 g_hash_table_destroy() 函数,这两者都发生在一个循环中。但是在这样做的同时,我正在观察正在使用的缓冲区/高速缓存。随着插入的完成,内存(空闲缓冲区/缓存内存)正在减少,但是当销毁工作时,反之亦然。
【问题讨论】:
标签: c linux data-structures hashtable ubuntu-14.04
我正在使用 GHashTable 将键值对插入表中,然后想要销毁表,使用 g_hash_table_destroy() 函数,这两者都发生在一个循环中。但是在这样做的同时,我正在观察正在使用的缓冲区/高速缓存。随着插入的完成,内存(空闲缓冲区/缓存内存)正在减少,但是当销毁工作时,反之亦然。
【问题讨论】:
标签: c linux data-structures hashtable ubuntu-14.04
您可能对应用程序如何释放内存有误解。典型的实现是应用程序不向操作系统返回内存;相反,内存被简单地标记为未分配并用于将来的 malloc() 调用。所以,如果你调用 allocate 一个大块,用数据填充它并调用 free(),并不能保证 free() 调用将内存返回给操作系统。
无论如何,“free -m”并不是监控空闲内存的最佳方式。空闲内存只是浪费内存,智能操作系统使用本来可以空闲的内存用于更好的目的,例如在内存中缓存磁盘文件。空闲内存的最优值是尽可能低的。
【讨论】: