程序如何使用比系统中更多的内存?

cli*_*ait 3 memory

今天早些时候,我在 Blender 中进行一些 3D 建模时,我在状态栏中注意到它使用了超过 34,000 MB 的内存。

我检查了我的系统统计数据,令我惊讶的是,它确实使用了 35 GB RAM,却丝毫没有减慢我的操作系统速度。

在此输入图像描述

在此输入图像描述

这些数字不相加。使用了 5.58 GB 的交换空间,这显然不足以容纳 Blender。

这是如何运作的?我的电脑只有 8 GB 内存,硬盘上甚至没有额外的 35 GB 可用空间。

har*_*ymc 6

我相信您在这里看到了\n内存压缩的效果,这是 OS X Mavericks 中引入的一项功能。

\n

Apple 文章\n在 Mac 上的活动监视器中查看内存使用情况\n将其描述为:

\n
\n
    \n
  • 使用的内存:正在使用的 RAM 量。在右侧,您可以看到内存分配的位置。

    \n
      \n
    • 应用程序内存:应用程序正在使用的内存量。

      \n
    • \n
    • 有线内存:系统运行所需的内存。此内存无法缓存,并且必须保留在 RAM 中,因此其他应用程序无法使用它。

      \n
    • \n
    • 压缩:已压缩的内存量,以提供更多 RAM 可用。

      \n
    • \n
    \n

    当您的计算机接近其最大内存容量时,内存中的非活动应用程序将被压缩,从而为活动应用程序提供更多内存。选择“压缩内存”列,然后查看每个应用的“虚拟机压缩”列,\n查看该应用\n压缩的内存量。

    \n
  • \n
\n
\n

将其应用到您的数字中,我们发现 Blender 总共使用\n35.40 GB 内存。然而,我们发现其中 32.47 GB\n 在压缩内存下。\n这为 Blender 留下了 35.4-32.47=2.93 GB 的未压缩内存。

\n

这与给定的“应用程序内存:2.54 GB”的数字更好地相关,\n这意味着一些未压缩的内存被换出。

\n

统计数据并没有说明压缩内存的内存占用量是多少,但从数字中我们可以得出结论,Blender 数据的可压缩性非常高,这可能是因为有许多重复的字节。

\n

这个结论是基于我们看到正在使用的实际内存和交换内存的总量:

\n
    \n
  • 应用程序内存:2.54 GB
  • \n
  • 压缩后:1.29 GB
  • \n
\n

应用程序使用的总 RAM 为 3.83 GB。

\n

为此,我们添加使用的交换空间:5.58 GB。

\n

然后,应用程序总共使用 9.41 GB 内存,其中大部分内存被换出。Blender 似乎占了大部分。

\n

Apple 使用并在此演示的压缩算法令人印象深刻。我们看到一台具有 8 GB RAM 的 Apple 计算机可以毫无问题地支持 35.40 GB 应用程序,如绿色的“内存压力”图所示。

\n

来自\n了解 Mac 上的压缩内存

\n
\n

压缩内存显示在内存压力图表中,这表明操作系统参与压缩 RAM 数据的积极程度。当 RAM 空间不足且必须将内存交换到驱动器时​​,图表会从绿色(压力较小)变为黄色(压力较大),最后变为红色。

\n
\n

运行 35.40 GB 的应用程序时,内存压力图\n表明只有“很小的压力”。\n压缩系数确实非常令人印象深刻,我估计\n该系数约为 3(或多或少)。

\n