每次更新,Skype 都会开始消耗大量内存。我听说当程序最小化时,Windows 可以从程序中回收部分内存。
例如,我曾在某处读过一篇文章,其中介绍了如何通过更改 about:config 中的某些内容来指示 Firefox 允许 Windows 在最小化时回收内存,并且它对我有用。
是否可以对 Skype 进行一些改进,使其在最小化时(当它几乎静静地停留在系统托盘中时)消耗更少的内存
答案1
最小化窗口可能会释放一点内存,但这取决于应用程序,而且不会释放太多内存。无论如何,最小化不会比任何其他形式的隐藏产生更大的影响。
即使应用程序的窗口被最小化,它仍然在运行。应用程序不会因为其中一个窗口被最小化而需要在内存中保存更少的数据。
每当应用程序的某个窗口最小化或恢复时,都会通知应用程序。每当其窗口的一部分变为可见或隐藏时,也会通知应用程序。应用程序可能会(但不太可能)对其窗口隐藏的各种原因做出不同的反应:
It can be minimized, meaning the window is not shown and an icon is shown in its place.
It can be hidden behind other windows (including the full-screen window of a screensaver).
It can be displayed on a different desktop, workspace, viewport, or whatever your window manager calls these.
It can be hidden in some other manner, for example “shaded” (meaning only a title bar is shown), or simply unmapped (meaning the window manager has decided for whatever reason that the window shouldn't be displayed).
如果应用程序的窗口完全隐藏,则应用程序无需刷新窗口内容。如果需要分配内存来刷新该内容,则在窗口隐藏时不会这样做。此外,如果窗口隐藏(无论出于何种原因),应用程序可能会在 X 服务器内释放少量内存。
在实践中,更大的区别在于,如果某个窗口未显示,则应用程序不会进行计算来重新绘制内容,因此绘制内容所需的数据可以交换出去。如果 RAM 紧张,并且有一段时间您不会与某个窗口交互,最好不要映射该窗口。同样,窗口不映射的原因(隐藏在其他窗口后面、最小化、阴影化等)并不重要。