как узнать сколько памяти "потребляет" процесс?
От: Аноним  
Дата: 18.09.11 14:49
Оценка:
Есть приложение, которое "жрет" память. Причем Task Manager показывает, что процесс протребляет меньше 10 мегабайт физической памяти.
Вкладка Performance Task manager'а показывает, что почти вся физическая память на машине забита чем-то. Если я завершаю этот свой процесс, память освобождается, как будто я завершил firefox с множеством открытых вкладок.

Собственно вопросы:
почему task manager "врет"?
как узнать сколько процесс на самом деле памяти "потребляет"?
как исправить ситуацию?

Так как это приложение написано на С++, я мог, конечно, допустить ошибку memory leak, но ведь тогда task manager'е я бы увидел что память "течет"?

Вот что показывет Task Manager (до того как я завершил процесс и память освободилась):


Спасибо
Re: как узнать сколько памяти "потребляет" процесс?
От: ononim  
Дата: 18.09.11 14:55
Оценка:
может файлмэпинги создаете и забываете закрывать/отмапливать?
Как много веселых ребят, и все делают велосипед...
Re[2]: как узнать сколько памяти "потребляет" процесс?
От: Аноним  
Дата: 18.09.11 17:10
Оценка:
Здравствуйте, ononim, Вы писали:

O>может файлмэпинги создаете и забываете закрывать/отмапливать?


я не использую отображаемые файлы.

Вот только что заметил — опера жрет 500 Мб хотя Task Manager показывает 168Mb. (заметил завершением процесса оперы и сравнением освободившейся памяти на вкладке Performance. Несколько дней назад такого не было...
Память постоянно занята в районе 1.8-2 Гб (Windows постоянно предлагает завершить процессы, в том числе и собственный dwm.exe чтоб освободить память).

наверное зверек какой-то поселился или апдейт криво встал?
но все-таки интересно почему task manager не показывает реально занимаемую память.
Если даже сложить объем Working sets всех процессов видных в task managere, занятая память что отображается на вкладке Performance значильно больше.
Re[3]: как узнать сколько памяти "потребляет" процесс?
От: ononim  
Дата: 18.09.11 17:39
Оценка: +1
O>>может файлмэпинги создаете и забываете закрывать/отмапливать?
А>я не использую отображаемые файлы.
А что используете? Включая 3rd part либы..

А>наверное зверек какой-то поселился или апдейт криво встал?

А>но все-таки интересно почему task manager не показывает реально занимаемую память.
Таск манагер показывает working set. "реально занимаемую память" слишком расплывчатое понятие. К примеру возьмем тот же файлмаппинг. Вот приложение взяло и закомитило файлмапинг, привязанный к файлу. Это реально занимаемая память или нет? Физ страницы то не заняты пока не произойдет обращения к страницам файлмапинга, и даже после того — они могут быть легко освобождены и отправлены на другие нужды. Место в активых пэйжфайлах при этом так же не резервируется. Так что это за память? Ее никто нигде не показывает до обращениям к страницам..
Или вот файлмапинг без файла (типа pagefaile-backed). Он может быть промаплен в нескольких разных процессах. Физические страницы и место резервируемое в свопе при этом шарится между всеми процессами. Кому принадлежит эта "память"? Никто ее тоже не показывает до обращения к страницам, а вот в в графе PF usage она очень даже видна все время.
Вобщем с памятью нынче все очень сложно.
Как много веселых ребят, и все делают велосипед...
Re: как узнать сколько памяти "потребляет" процесс?
От: Banned by IT  
Дата: 19.09.11 01:32
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

ProceXP + VMMap + RamMap помогут.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: как узнать сколько памяти "потребляет" процесс?
От: DM.PROFF Россия  
Дата: 19.09.11 02:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Собственно вопросы:

А>почему task manager "врет"?
А>как узнать сколько процесс на самом деле памяти "потребляет"?
А>как исправить ситуацию?

А>Спасибо


Проверьте настройки файла подкачки.
У меня была похожая ситуация, когда система работала с файлом подкачки, меньше рекомендованного.
Вылечилось установкой размера файла подкачки по выбору системы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.