当计算机内存不足时会发生什么?

use*_*510 9 memory resource-usage

前段时间,出于好奇,我写了一个非常快占用大量内存的Java程序。(它在循环中将 BufferedImages 添加到数组列表中。)

我一直打开 Windows 系统监视器以观察它运行时的 RAM 使用情况。

当我启动程序时,RAM 使用率上升得非常快,当它达到我的 6GB RAM 的 100% 时,我的计算机变得非常慢。大约一分钟后,我设法终止了程序,我的电脑慢慢恢复了速度。引起我注意的是,内存使用量首先缓慢下降,然后突然下降到几乎 0MB,然后又上升到 2-2.5GB 左右的空闲使用量。

我在系统监视器中截取了 RAM 使用情况:

在此处输入图片说明

我想知道是否有人可以解释当计算机内存不足时会发生什么以及为什么它不会在程序结束后立即恢复空闲状态而是大约 60 秒后?另外,为什么使用率一直下降到没有,而不仅仅是闲置使用?

Emi*_*röm 15

当您开始达到主内存的限制时,您的操作系统将开始将内存换出到磁盘,以便为更多内容腾出空间(这称为分页)。这就是为什么你的计算机越来越慢真的因为磁盘驱动器是waaaay慢于RAM,即使你是一个SSD,并且它也是你的程序可以去没有留下任何主内存的原因。

空闲内存通常首先被换出,以便活动程序可以在 RAM 中拥有尽可能多的内存。这就是内存使用量低于通常的空闲状态的原因。系统将再次开始交换内存页面,最终空闲内存将填满 RAM。