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