为什么部分完整的 RAM(比如说 80%)会使设备滞后很多,即使有一些空间可用于存储更多数据?我期望的是它一直运行良好,直到 99%。
我注意到在移动设备上比在 PC 上更多,因为它有更小的内存,例如我的手机有 2 GB 内存;当我的可用 RAM 少于 1 GB 时,它会滞后很多!为什么会发生这种情况,即使它仍有 ~ 1 GB 可用?
LMi*_*er7 71
这里涉及的内容很多,但我将尝试尽可能简单地解释它,并以适用于几乎任何操作系统的方式进行解释。
这里有两个基本原则:
需要在 RAM 中的所有东西和那些将从 RAM 中受益的东西的总和几乎总是大于 RAM 的大小。可以从 RAM 中受益的事情包括进程工作集和备用列表。后者包含曾经处于活动状态但此后不再活动的数据和代码。其中大部分将再次使用,其中一些很快就会被使用,因此将其保存在 RAM 中是有益的。该内存充当一种缓存,但并不是真正必要的,因此属于可用内存类别。就像空闲内存一样,它可以快速提供给任何需要它的程序。为了性能,备用内存应该很大。
内存块的使用频率远非随机,但可以相当准确地预测。内存被分成块,通常是 4K 字节。有些块每秒被访问多次,而其他块在很多分钟、几小时、几天甚至几周内都没有被访问,如果系统已经运行了足够长的时间。在这两个极端之间有广泛的用途。内存管理器知道哪些块最近被访问过,哪些块没有被访问过。一个合理的假设是,最近访问过的内存块将很快再次被需要。最近没有访问过的内存可能很快就不需要了。长期的经验证明这是一个有效的原则。
内存管理器利用第二个原则在很大程度上减轻第一个原则的不良后果。为此,它在将最近访问的数据保留在 RAM 中同时将很少使用的数据保留在原始文件或页面文件中进行了平衡操作。
当 RAM 充足时,这种平衡行为很容易。许多最近不使用的数据可以保存在 RAM 中。这是一个很好的情况。
当工作量增加时,事情会变得更加复杂。使用的数据和代码的总和更大,但 RAM 的大小保持不变。这意味着它的一个较小的子集可以保存在 RAM 中。一些最近不使用的数据不能再在 RAM 中,而必须留在磁盘上。内存管理器非常努力地在活动使用的内存和可用内存之间保持良好的平衡。但是随着工作负载的增加,内存管理器将被迫为正在运行的进程提供更多可用内存。这不是一个好情况,但内存管理器别无选择。
问题是在程序运行时将数据移入和移出 RAM 需要时间。当 RAM 充足时,它不会经常发生,甚至不会被注意到。但是当 RAM 使用率达到高水平时,它会更频繁地发生。情况可能变得如此糟糕,以至于将数据移入和移出 RAM 所花费的时间比实际使用它所花费的时间要多。这是颠簸,内存管理器极力避免的事情,但工作量很大,通常无法避免。
内存管理器就在您身边,即使在不利条件下也始终尽力保持最佳性能。但是当工作负载很大而可用内存不足时,它必须做坏事才能继续运行。这其实是最重要的。优先事项是首先保持运行,然后尽可能快地进行。
Mik*_*ott 28
所有现代操作系统都使用其他未使用的内存来缓存数据,以便可以从快速 RAM 而不是较慢的存储中访问数据。他们通常会将此报告为可用内存,因为应用程序可以清除缓存并在需要时使用它,但它实际上仍在使用中。它越少,可以缓存的数据就越少,计算机也会越慢。
| 归档时间: |
|
| 查看次数: |
18921 次 |
| 最近记录: |