вот такой вывод top
Mem: 1034000k total, 642856k used, 391144k free, 35708k buffers
Swap: 1052216k total, 33604k used, 1018612k free, 259492k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP DATA COMMAND
22373 vinick 25 0 2175m 289m 1324 R 99.9 28.7 144:22.86 1.8g 2.1g proga
может кто-нибудь объяснить - почему Mem(used)+swap(used) = 660mb, хотя
как я понимаю должно быть не менее 2175mb.
Куде девается 1.8g свопа? в /dev/null?
может быть ответ на этот вопрос поможет понять откуда вобще берется такой перерасход.
осталось теперь только выяснить какая сволочь делает такие "заказы памяти", если я кроме STL контейнеров ничего для динамического выделения памяти не использую.
> ...какая сволочь делает такие "заказы памяти", ...
Обрати внимание, она у тебя 2 гига отъела. Система 32-х битная?
Я думаю, просто компилятор порезвился, отъев все доступное
адресное пространство (насколько я понимаю, в юзерспейсе больше 2 гигов не доступно),
чтобы использовать свой менеджер памяти. Ничего страшного, все равно больше реальной
памяти, чем есть, задача не получит:)
система 32-битная,
Приложение стартует с занятыми примерно 60 метрами(это нормально и правомерно), потом соскоростью 2-3 Мб/сек отъедает виртуальную память и при достижении примерно 2.7 гигов, как и сказал cvv, падает по exception bad_allock.
Посмотри, где память течет. Очевидно, приложение в цикле выделяет память и ничего
с ней не делает. Как только адресное пространство заканчивается, падает.
все, разобрался, в утечка была чужой библиотеке,в цикле выделялись блоки по 128 килобайт, использовалось из блока всего 10 кб и потом память не освобождалась.
Меня просто сбило с толку, то как она текла. Обычно если память течет, то после определенного момента начинается активная работа со свопом, а
тут таких симптомов не было.
> Обычно если память течет, то после определенного момента
начинается активная работа со свопом, а тут таких симптомов не было.
Надеюсь. понятно, почему.
На вс. случай поясню: фактически память не выделялась, а только резервировалась.
Выделялись только адреса, а реальных страниц для них не выделялось,
соответственно, и свопиться было нечему. Как только адресное пространство закончилось,
резервировать стало нечего...