窗口是否最大限度地减少了可用内存的使用?

窗口是否最大限度地减少了可用内存的使用?

未显示的最大化窗口和最小化窗口对于最终用户来说都是不可见的。我所说的未显示是指被活动窗口覆盖的非活动最大化窗口。

然而,有一个区别——这在应用程序切换服务中变得很明显,就像 Compiz 一样:最大化窗口的外观对于窗口管理器来说是“已知的”(因此它可以生成缩略图),而最小化窗口则由图标表示仅(不计算窗口的外观/内容)。

那么这是否意味着窗口最小化时会释放内存?内存对 WM 可以最大化的窗口数量是否有限制?如果存在这样的限制,它是否实质性/相关?

想象一下一个不允许最小化(而只是在最大化窗口之间切换)的 WM:该 WM 是否会因为内存使用而对最终用户施加相当大的限制?

感谢您澄清这一点——我可能有错误的想法。

答案1

最小化窗口可能会释放一些内存,但这取决于应用程序,而且不会释放太多内存。无论如何,最小化不会比任何其他形式的隐藏产生更大的影响。

即使应用程序的窗口最小化,它仍然在运行。应用程序不会仅仅因为其中一个窗口被最小化而需要在内存中保留较少的数据。

每当应用程序的窗口之一被最小化或恢复时,就会收到通知。每当其窗口的一部分变得可见或隐藏时,它也会收到通知。应用程序有可能(但不太可能)对其窗口隐藏的各种原因做出不同的反应:

  • 它可以最小化,这意味着窗口不会显示,而是会在其位置显示一个图标。
  • 它可以隐藏在其他窗口(包括屏幕保护程序的全屏窗口)后面。
  • 它可以显示在不同的桌面、工作区、视口或窗口管理器的任何名称上。
  • 它可以以其他方式隐藏,例如“阴影”(意味着仅显示标题栏),或者简单地取消映射(意味着窗口管理器出于某种原因决定不应显示窗口)。

如果应用程序的窗口完全隐藏,则应用程序不需要刷新窗口内容。如果它需要分配内存来刷新该内容,则在窗口隐藏时它不会这样做。另外,如果窗口被隐藏(出于任何原因),应用程序可能会释放 X 服务器内的一些内存。

在实践中更重要的是,如果没有显示窗口,则应用程序不会进行重新绘制内容的计算,因此可以交换绘制内容所需的数据。如果 RAM 紧张并且有一个窗口您在一段时间内不会进行迭代,那么最好不映射该窗口。同样,窗口未映射的原因(隐藏在其他窗口后面、最小化、阴影等)并不重要。

相关内容