組み込み Linux システムで一晩メモリ テストを実行しています。vmstat を使用すると、時間の経過とともに空きメモリが着実に減少することがわかりました。procfsのいくつかのsmaps分析によると、1 つのプロセスのヒープはほぼ同じ割合で増加します。私はメモリ リークを疑い、コード内でとが定期的に使用されている場所をいくつか見つけました。ただし、呼び出しが一致しない呼び出しは表示されませんでした。new
delete
new
delete
メモリテストを再度実行し、今朝、次の呼び出しでメモリキャッシュをクリアしました
echo 3 > /proc/sys/vm/drop_caches
vmstat にリストされている空きメモリは、テストが開始されたときの値に近い値になりました。
カーネルは定期的に未使用のヒープ ページを再利用しますか? もしそうなら、これが行われる上記以外の時間はありますか? おそらく、空きメモリが特定のしきい値を下回ったときですか?