我有一个应用程序,随着测试用例的运行,其内存增加。这显然让我相信我的应用程序存在内存泄漏。因此,我在我的应用程序上运行了valgrind,并惊讶地发现它没有发现任何泄漏。
我不确定为什么我的进程会出现内存泄漏,所以我查看了我的进程的smaps文件,以下是我发现的有趣内容:
08426000-42f56000 rwxp 00000000 00:00 0 [heap]
Size: 961728 kB
Rss: 960252 kB
Pss: 960252 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 960252 kB
Referenced: 960252 kB
Anonymous: 960252 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
为了理解这些数字,我做了一些关于Private_Dirty内存的研究,大多数文章都指出这是尚未被释放的内存,因为它们很昂贵。
这似乎表明这些只是应用程序释放的内存,但由操作系统保留。
有人能帮我更好地理解private_dirty吗?这可能是我遇到内存泄漏的迹象吗?
谢谢。