【发布时间】:2012-09-22 06:32:15
【问题描述】:
我有一个用 C 语言编写的程序,它使用 Berkeley-Db、glib-2 和 libxml-2。它是一个搜索索引器,它使 NLP 具有句法和语义分析,并将概念结构存储在搜索索引中而不是单词中。
但是,我有一个问题 - 大约一天后,我的程序内存不足。
当我尝试在 valgrind 下运行我的程序时,它的运行速度非常慢,在我看来,比正常运行慢 10 倍。
我所有检查内存泄漏的尝试(在 valgrind 下进行了数周左右)都没有显示任何泄漏。
有人知道在这种情况下可以帮助我的一些工具吗?
【问题讨论】:
-
这可能不是泄漏,只是您已经使用了所有内存吗?奥卡姆剃刀等等。
-
@tbert 我不这么认为,看起来不像这样。每个文档之后都会释放内存。
-
这可能是您的地址空间碎片化,即使您有空闲内存,也无法为缓冲区分配足够大的连续地址空间块。如果您的应用目前是 32 位的,那么转为 64 位可能是个好主意。
-
@AlexeyFrunze 我的应用是 64 位的。
-
我在类似情况下使用 Deleaker...
标签: c memory-leaks valgrind memory-leak-detector