Задать вопрос

Для знатоков: выделение памяти в Windows VS кэширование?

Ситуация: компьютер, на борту которого 4 ГБ оперативной памяти, работающий под управлением Windows 7 64-bit в течение нескольких часов занимался сложной задачей (импорт большого массива данных в SQL из кучи мелких файлов (100.000+ файлов)). Постепенно работа компьютера замедлялась все больше и больше и он стал почти совсем неотзывчивым. Монитор ресурсов на вкладке «Память» в разделе «Физическая память» показывает:

Зарезервированное оборудование: 2 МБ

Используется: 3874 МБ

Изменено: 1 МБ

Ожидание: 163 МБ

Свободно: 46 МБ

(пока я это писал, цифры незначительно изменялись то в большую, то в меньшую сторону)


НО! Если просуммировать процессы по значениям в столбце «Завершено (КБ)» или «Рабочий набор (КБ)» (кто-нибудь может пояснить в двух словах, в чем разница между этими значениями?), то по сумме получается, что все процессы потребляют не более 2 ГБ памяти.


Вопрос: кто съел еще почти 2 ГБ памяти и почему она не высвобождается? (в текущий момент никаких трудоемких или требующих памяти задач не выполняется).


PS В диспетчере задач на вкладке «Быстродействие» такая картина по памяти:

Всего: 4094

Кэшировано: 178

Доступно: 211

Свободно: 34


Память ядра:

выгружаемая: 361

невыгружаемая: 66


Система:

дескрипторов: 43735

Потоков: 1587

Процессов: 126

Выделено (МБ): 5979 / 8187 (хотелось бы чтобы кто-то также прокомментировал, что означают эти цифры)


Надеюсь только на экспертов.
  • Вопрос задан
  • 28645 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
amc
@amc
>>Свободно: 46 МБ
Это количество действительно свободной памяти, т.е. вообще ни подо что не задействованной. В нормальных условиях её и должно быть свободно чуть-чуть, т.к. остальная _доступная_ память должна уходить на кеширование.

>>в чем разница между этими значениями
Ну вообще, если навести мышу на заголовки, то там подсказка выплывает ;)
Завершено — сколько виртуальной памяти выделенно процессу (т.е. например процесс попросил 2Гб аллокейтнуть — будет показывать 2Гб здесь);
Рабочий набор — сколько в реальности сейчас висит в оперативной памяти, т.е. значение может быть меньше чем «Завершено».
Вот хороший пример:


>>Вопрос: кто съел еще почти 2 ГБ памяти и почему она не высвобождается?
Ну куда именно она ушла только по итоговым показателям трудно сказать, для более-менее конкретного гадания нужно хотя скриншоты. Крайне желательно взять Process Monitor (www.sysinternals.com).

>>Всего: 4094
Это объём _оперативной памяти_ (без свопа)
>>Кэшировано: 178
Это объём оперативной памяти выделенной под кеширование файлов
>>Доступно: 211
Это объём оперативки, который система может выделить для процесса (состоит из кеш+свободная)

>>Выделено (МБ): 5979 / 8187
Выделено памяти — 5979 мегабайт из максимально доступных 8187 мегабайт, состоящих из ~4096 Мб оперативной памяти и 4096 Мб файла подкачки.
Что, кстати, косвенно говорит о том, что памяти кто-то очень немало сожрал, аж в 1,5 раза больше чем оперативки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы