Некоторое время назад из любопытства я написал программу на Java, которая очень быстро занимает много памяти. (Это добавляет BufferedImages к массиву в цикле.)
Я оставил системный монитор Windows открытым, чтобы наблюдать за использованием оперативной памяти.
Когда я запустил программу, использование оперативной памяти росло очень быстро, и, поскольку оно достигло примерно 100% от 6 ГБ ОЗУ, мой компьютер стал работать очень медленно. Примерно через минуту мне удалось завершить программу, и мой компьютер медленно восстановил скорость. Что привлекло мое внимание, так это то, что использование памяти сначала медленно уменьшалось, а затем внезапно уменьшилось почти до 0 МБ, а затем снова возросло до простоя, составляющего около 2-2,5 ГБ.
Я сделал скриншот использования оперативной памяти в системном мониторе:
Мне было интересно, кто-нибудь может объяснить, что происходит, когда у компьютера заканчивается память и почему он не возвращается в режим ожидания сразу после завершения программы, а примерно через 60 секунд? Кроме того, почему использование сводится к нулю, а не простаивает?
источник
Ответы:
Когда вы достигнете предела основной памяти, ваша операционная система начнет выгружать память на диск, чтобы освободить место для дополнительных ресурсов (это называется подкачкой страниц ). Вот почему ваш компьютер работает очень медленно, потому что дисковод работает медленнее, чем ОЗУ, даже если вы работаете на SSD, и это также причина, по которой ваша программа может работать без остатка основной памяти.
Неактивная память часто выгружается первой, чтобы активные программы могли иметь как можно больше памяти. Это причина использования памяти ниже обычного состояния простоя. Система снова начнет обмениваться страницами памяти, и свободная память со временем заполнится в ОЗУ.
источник