-3

私のプログラムはファイルから構造体にデータをロードします

std::tr1::unordered_map< Key, Details*> 

std::tr1::unordered_map< KeyOuter, std::tr1::unordered_map<KeyInner, Details*>* >
Key := std::string | int | long long
Details : struct { Fields } ( sizeof >=40 bytes )

私のプログラムは定期的にファイルから新しいデータを読み取り、その後古い構造をリサイクルします。(新規・削除操作が多い)

Windows の場合:データをリロードした後のメモリ使用量は ~200 MB です。

CentOS の同じファイル:リロードごとに合計メモリ使用量が 1000 MB まで増加します (メモリ使用量: 200->400->600->800->1000->1000->1000->1000)

vld と valngrind でリークは検出されませんでした。

Linuxのメモリでこの問題をどのように解決しますか?

4

1 に答える 1

2

これは問題ではありません。Linux は、以前に読み取ったファイルをキャッシュに保持しているため、それらから再度読み取る必要がある場合でも、HDD アクセスは必要ありません。

このメモリは失われません。プロセスがより多くのメモリを必要とするとすぐに解放されます。

詳細については、http://www.linuxatemyram.com/および superuser.com の同様のトピックを参照してください。

于 2013-09-24T13:04:02.790 に答える