У меня есть следующий список процессов и потребление памяти (сообщается через проводник процессов) на сервере 2008 R2 с SQL, TFS и некоторыми другими инструментами:
Как видите, система потребляет 3,6 ГБ, но в списке процессов показан только большой процесс (первый [SQL Server]), занимающий менее 500 МБ, а остальные довольно маленькие, поэтому я не знаю, кто берет почти все памяти сервера. Есть идеи, как узнать виновного?
ОС все равно, и вам тоже. Операционная система не испытывает нехватки памяти, в ней свободно 500 МБ. Так что мне все равно, как используется память вообще.
Единственное, что он мог сделать, - это вложить ресурсы процессора в восстановление памяти. Но тогда произойдет одно из двух:
В любом случае эта память не будет использована. Это сделало бы все усилия по освобождению от мусора. И это наиболее вероятный исход, поскольку 500 МБ уже не используются. Чем больше свободной памяти, тем больше будет нет в любом случае влияет на производительность.
Эта память будет использована. В этом случае попытки сделать его бесплатным снова были бы пустой тратой, потому что его просто нужно было бы отменить.
Современные операционные системы освобождают память только тогда, когда у них нет другого выбора. Это наихудшее, что они могут сделать с памятью, поскольку для этого им требуется дополнительная работа, чтобы использовать эту память. Им гораздо проще переводить память напрямую из одного использования в другое без добавления расточительного промежуточного шага по его освобождению.
Он просто делает то, что делал в последний раз. У ОС нет необходимости восстанавливать ее, потому что наиболее вероятным следующим использованием этой памяти будет то, что она уже делала раньше, и она уже есть - бесплатно.
Тем не менее, RAMMap скажу тебе. Но совершенно бессмысленно анализировать использование памяти ОС на машине, которая не испытывает нехватки памяти.