我一直在运行嵌入式Linux系统的内存过夜测试。使用vmstat,我观察到空闲内存随着时间的推移而稳步减少。根据procfs中的一些smaps分析,一个进程的堆在大致相同的速度增长。我怀疑存在内存泄漏,并在代码中找到了一些常规使用new和delete的地方。然而,我没有看到new调用没有匹配的delete调用。
我再次运行了内存测试,并在今天早上使用以下调用清除了内存缓存。
我再次运行了内存测试,并在今天早上使用以下调用清除了内存缓存。
echo 3 > /proc/sys/vm/drop_caches
vmstat中列出的可用内存下降到了接近测试开始时的值。
内核是否定期回收未使用的堆页面?如果是,除了上述时间之外,是否还有其他时间进行回收?当可用内存低于某个阈值时,可能会执行此操作。