2013-09-24 65 views
-2

我的程序加載從文件中的數據到結構內存在Linux中

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中:重裝數據後的內存使用量〜200mb。

於CentOS相同文件:每重裝上升至1000MB後總的內存使用情況(內存使用:200-> 400-> 600-> 800-> 1000-> 1000-> 1000-> 1000)

vld和valngrind沒有檢測到泄漏。

如何在Linux中用內存解決這個問題?

+0

解決。內存在** malloc_trim()**調用後返回到os – Jens

回答

2

這是不是有問題。 Linux將您之前讀取的文件保存在緩存中,這樣如果您需要再次讀取它們,則不需要硬盤訪問。

該內存不會丟失,只要任何進程需要更多內存,該內存就會被釋放。

有關更多詳細信息,請參閱http://www.linuxatemyram.com/以及superuser.com上的類似主題。