2013-09-24 9 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) 

Периодически моя программа считывает новые данные из файлов, после того, что он перерабатывает старые структуры. (Много новых операций/удаление)

В окнах: Использование памяти после перезагрузки данных ~ 200 МБ.

Одинаковые файлы в CentOS: общее использование памяти после каждого перегрузочных увеличивается до 1000 Мб (Использование памяти: 200-> 400-> 600-> 800-> 1000-> 1000-> 1000-> 1000)

Не обнаружено утечек с помощью vld и valngrind.

Как решить эту проблему с памятью в Linux?

+0

Решенные. Память возвращается в os после вызова ** malloc_trim() ** – Jens

ответ

2

Это не проблема. Linux сохраняет файлы, которые вы читаете ранее в своем кеше, так что, если вам нужно снова прочитать их, вам не нужны обращения к жесткому диску.

Эта память НЕ потеряна, она будет выпущена, как только любой процесс потребует больше памяти.

Для получения дополнительной информации см. http://www.linuxatemyram.com/ и аналогичные темы на superuser.com.

Смежные вопросы