![当计算机内存不足时会发生什么情况?](https://linux22.com/image/1319560/%E5%BD%93%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%E6%97%B6%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%EF%BC%9F.png)
不久前,出于好奇,我编写了一个 Java 程序,它很快就占用了大量内存。(它循环将 BufferedImages 添加到数组列表中。)
我保持 Windows 系统监视器打开,以观察运行时的 RAM 使用情况。
当我启动该程序时,RAM 使用率上升得非常快,当它达到 6GB RAM 的 100% 左右时,我的电脑变得非常慢。大约一分钟后,我设法终止了该程序,我的电脑慢慢恢复了速度。引起我注意的是,内存使用率首先缓慢下降,然后突然下降到几乎 0MB,然后又回升到大约 2-2.5GB 的空闲使用率。
我截取了系统监视器中 RAM 使用情况的屏幕截图:
我想知道是否有人可以解释一下当计算机内存耗尽时会发生什么,以及为什么它不在程序结束后立即恢复空闲状态,而是在大约 60 秒后恢复空闲状态?此外,为什么使用量会一直下降到零,而不是只是空闲使用量?
答案1
当你开始达到主内存的限制时,你的操作系统将开始将内存交换到磁盘,以便为更多的东西腾出空间(这称为分页)这就是为什么你的电脑变得很慢,因为磁盘驱动器哇哇哇比 RAM 慢,即使你使用的是 SSD,这也是你的程序可以在没有任何主内存的情况下继续运行的原因。
空闲内存通常会先被换出,以便活动程序可以在 RAM 中拥有尽可能多的空间。这就是内存使用率低于通常空闲状态的原因。系统将再次开始换入内存页面,空闲内存最终将填满 RAM。