|
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
|
||||||
Std::vector и утечки памяти24.06.2016, 21:39. Показов 3775. Ответов 7
Метки нет (Все метки)
Проблема проявляется исключительно на Linux
При заполнении любого контейнера большим количеством данных с последующим уничтожением контейнера остается занято приличное количество памяти. Пример кода:
Памяти занято при gcc 4.9.2 - ~400 мб VIRT и RES При gcc 6.1 - ~200мб VIRT и RES Очистка кеша вручную не помогает Заранее благодарен за возможные решения P.S. На винде таких проблем не возникает
0
|
||||||
| 24.06.2016, 21:39 | |
|
Ответы с готовыми решениями:
7
Std::vector push_back vs emplace_back std::vector доступ по индексу vs доступ по итератору Освобождение памяти после std:bind |
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 25.06.2016, 09:48 | |
Сообщение было отмечено Flassie как решение
Решение
Flassie, это особенности работы с паматью в libc.
Процесс не отдает память системе на тот случай, что она еще понадобится. Сисшная malloc_trim(0) должна помочь. Частично (не думаю, что значительно) может помочь освобождение каждой строки.
1
|
|
|
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
||||||
| 25.06.2016, 10:33 | ||||||
|
Проблема в фрагментации кучи.
Стандартный аллокатор из glib возвращает системе свободные страницы только с её вершины. То есть если, условно говоря, выделить двести метров памяти, потом ещё пять и опять двести, а затем высвободить оба больших блока, то системе вернется только последний из них. Это _не_ утечка памяти в прикладном её понимании, т.к. аллокатор будет выделять место в первом пустом блоке при новых вызовах. Понять, что за данные остались в куче после того, как(казалось бы) всё высвобождено, можно запустив valgrind --leak-check=full --show-leak-kinds=all :
Если это необходимо, то бороться с таким поведением можно использованием более другого аллокатора.
1
|
||||||
|
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
|
|||
| 25.06.2016, 11:01 [ТС] | |||
|
Добавлено через 18 минут
0
|
|||
|
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
|
||
| 25.06.2016, 18:03 | ||
).Определитесь с тем, что вы называете "утечка памяти" и чем вы её меряете. По стандартам возвращаемая процессом динамически полученная ранее память не обязана сразу же возвращаться в систему. Она остаётся за процессом, чтобы не дёргать память вперёд-назад на случай (вероятный) следующих размещений. Это никак не считается утечкой памяти.
0
|
||
|
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
|
||
| 25.06.2016, 23:05 [ТС] | ||
|
Ну вы уж извините) А когда приложение впустую занимает приличный объем памяти - это не очень нормально, как по мне Хотя в некоторых случаях, отрицать не стану, это полезно
0
|
||
|
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
|
|||
| 25.06.2016, 23:18 | |||
. Особенно в многозадачных ОС: когда где-то памяти будет не хватать - вот тогда у вас немедленно её и отберут.P.S. Вы должны при этом ещё принимать во внимание такие вещи, не очень заметные с уровня пользовательского программирования, как: MMU, отображение логических страниц на физическую память, выделение физической памяти только и исключительно страницами ... и др. подобные вещи. Дурные привычки это: а). изучать программирование в Windows + б). переносить полученные в Windows стереотипы на другие (нормальные) системы.
0
|
|||
| 02.07.2016, 15:03 | ||
|
0
|
||
| 02.07.2016, 15:03 | |
|
Помогаю со студенческими работами здесь
8
std::string, std::fstream, ошибка кучи Как обращаться к vector<vector>?
Разделить vector<string> на два vector<string> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|