窗口是否最小化可用内存使用量?

ney*_*rec 13 window-manager memory x11 window

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

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

那么这是否意味着当窗口最小化时会释放内存?内存是否对 WM 可以最大化的窗口数量施加了限制?如果有这样的限制,它是否重要/相关?

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

感谢您解决这个问题---我可能有错误的想法。

Gil*_*il' 10

最小化一个窗口可能会释放一点内存,但这取决于应用程序,而且不会有太多。在任何情况下,最小化不会比任何其他形式的隐藏产生更大的差异。

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

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

  • 它可以最小化,这意味着不显示窗口并在其位置显示一个图标。
  • 它可以隐藏在其他窗口后面(包括屏幕保护程序的全屏窗口)。
  • 它可以显示在不同的桌面、工作区、视口或您的窗口管理器所称的任何内容上。
  • 它可以以其他方式隐藏,例如“阴影”(意味着只显示一个标题栏),或者只是不映射(意味着窗口管理器已经决定不应该显示该窗口的任何原因)。

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

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