【发布时间】:2018-05-10 12:40:49
【问题描述】:
我有一个进程不断分配内存,并在另一个线程处理完相关数据后释放它。当数据处理速度慢时,我看到 RES 内存变大;但在处理完所有数据后,RES 会下降,但不会回到原始 RES 值(即使等待超过 10 分钟)。
例如10 MB(原始)=> 50 MB(峰值)=> 30MB(释放所有数据后)
我使用 valgrind 和 massif 来分析内存,看起来所有数据都被释放了。我的问题是为什么 RES 不回到原来的 10 MB?
【问题讨论】:
-
这是因为当堆上的内存完全返回给操作系统时,它是在内存分配器的处置上。但是您可以选择使用
mmap()/munmap()自己管理内存分配,以完全控制这一点。 -
C 还是 C++? IE。
new或malloc?
标签: c++ c linux memory dynamic-memory-allocation