題 當程序最小化時,計算機是否使用較少的資源?


當程序在Windows 7中最小化時,它們是否使用更少的內存和CPU而不是最大化它們?


94
2017-12-05 20:53


起源




答案:


是。根據MS支持, 修剪最小化應用程序的工作集。您可以使用Process Explorer自行檢查。

這是對Windows 7 x64中單個Firefox 5.0實例的測試,其中加載了ESPN.com網站的單個選項卡。使用任務管理器讀取值。

type                 not minimised  minimised     diff
------------------------------------------------------
working set               165,752k   163,768k  -1,984k
peak working set          169,624k   169,624k      N/A
mem (private working set) 121,600k   119,576k  -2,024k
commit size               135,576k   133,504k     -72k
paged pool                    396k       397k      +1k
np pool                        82k        81k      -1k
handles                        504        483      -21
threads                         34         31       -3
user objects                    40         44       +4
GDI objects                     71         75       +4

這是對Windows 7 x64中單個Paint.NET實例的測試,其中打開了一些小圖像。這個應用程序是用Microsoft .NET編寫的,不像Firefox,幾乎可以肯定是C / C ++。

type                 not minimised  minimised     diff
------------------------------------------------------
working set               125,904k   125,256k    -684k
peak working set          217,836k   217,836k      N/A
mem (private working set)  61,844k    61,844k       0k
commit size               102,388k   102,384k      -4k
paged pool                    542k       541k      -1k
np pool                        59k        59k       0k
handles                        741        741        0
threads                         19         19        0
user objects                   276        273       -3
GDI objects                    489        491       +2

66
2017-12-05 21:15



哇,這很有趣,你有一個KB支持它。 +1 - Not Kyle stop stalking me
這不適用於Windows的現代版本(7,Vista)。在現代操作系統上,如果需要內存,操作系統將修剪常駐工作集 所有 進程,最小化與否(基於他們最近訪問內存頁面的程度)。如果因任何原因不需要內存,那麼修剪它就是愚蠢的 - 為什麼在內存充足時無償地降低應用程序的性能呢? - David Schwartz
哇,所以人們不喜歡答案......有沒有人有相反的證據?我看到它的方式Kinokijuf實際上有一些證據,你們說它不適用於Windows 7和vista,但沒有提供任何來源...你們甚至沒有測試它:\工作集和分配的內存是兩個不同的東西。 Process explorer是測試它的唯一方法。 - Not Kyle stop stalking me
值得注意的是,減少系統資源的使用是微不足道的:在給出的示例中,通過最小化應用程序,工作集僅減少約1.2%。 - bgvaughan
注意在這個評論帖子中缺少Win32開發者。有許多Win32事件可以跳過最小化的應用程序。即使沒有明顯的內存節省,也確保節省CPU使用率。 - surfasb


是的,不是。他們將在GPU上使用更少的資源 - 減少對屏幕刷新的需求 - 但不會在主系統內存或CPU上使用。

任務管理器中顯示的工作集大小為  應用程序消耗的實際內存量。它更多的是它在特定時間點可以使用多少的上限。

如果另一個應用程序請求分配給一個未處於活動狀態的進程工作集的內存,則可以在不更改應用程序實際使用的內存量的情況下降低此數量。


27
2017-12-05 20:57



我真的討厭投票答案,但這是錯的......如果你在10分鐘前問過我,我會以為你是對的。 - Not Kyle stop stalking me
@Lieven這個違規行至少對我而言,以及為什麼downvote代表:“他們將在你的GPU上使用更少的資源 - 減少對屏幕刷新的需求 - 但不會在你的主系統內存或CPU上。”問題明確指出:“他們使用更少的內存和CPU而不是讓他們最大化”答案是這樣的,至少根據MS的說法(我會在這裡寫信給MS,因為它使用的資源更少)。他最小化時不會詢問應用程序的性能,只要它使用的資源更少。 - Not Kyle stop stalking me
@Kyle那篇KB文章是5歲。它不適用於現代內存管理方案。 (如果你看到我對kinokijuf的答案的評論,你會看到為什麼它首先是一個壞主意 - 除了在無法跟踪頁面使用新近度的操作系統上。) - David Schwartz
腳註說它適用於NT4,2000和XP。我懷疑從那以後發生了什麼變化。 - kinokijuf
我可以在我的Vista機器(使用Process Explorer)上確認工作集仍然會丟失。 - kinokijuf


“工作集”與“內存使用”不同

如果一個程序需要一塊內存,它總是需要它。如果沒有,那就沒有。 最小化程序不會突然使程序“不需要”內存。 “修剪”工作集很簡單 分頁 來自的記憶 物理內存 到了 磁盤,或者只是刪除頁面,如果它在磁盤上的其他地方可用。 (在後一種情況下,操作系統會這樣做 無論如何 如果內存不足,那麼這只是一個緩存問題,而不是“使用”問題。)在任何一種情況下,它都會  減少程序使用的內容;它只是 再定位 其他地方的數據。

也就是說,關於CPU使用情況:有一種叫做a 優先提升 操作系統在某些條件下給出,這確實可以使前台應用程序使用更多的CPU。看到 這裡 詳情。


12
2017-12-08 06:45





這實際上取決於您所談論的應用程序以及應用程序的編碼方式;但是為了比較,我們可以說程序的編碼方式是在最大化和最小化時運行相同的功能。

因此,如果應用程序調用相同的底層函數,我們希望程序在最小化時使用相同數量的CPU。

但是,當程序最小化時,系統進程肯定會使用較少的CPU,因為為應用程序查看呈現的圖形較少,現在可能只是一個系統托盤圖標。

這是因為除非最小化應用程序,否則會導致更多圖形應用程序進入視圖並因此呈現,現在由於額外的圖形工作負載,CPU負載可能會增加。

總而言之,我們在這裡談論的所有變化可能都是微不足道的,除非你的規格很低。


4
2017-12-05 21:04



-1,無關緊要。對於任何比較,你總是要假設 Ceteris paribus - Lie Ryan
沒有意識到,當明確並涵蓋兩種可能性時,假設是一件壞事。 - iTom
某些假設是無關緊要的,因此即使明確表示也是無用的。如果程序以最小化將終止程序的方式編寫,那顯然會使計算機使用更少的資源;這個假設對於討論來說完全沒用。 - Lie Ryan


很少。對於可以識別何時最小化的交互式程序,是的,它將使用較少的CPU功率。對於像Microsoft Word這樣的程序,CPU消息不會減少。

對於圖形密集型應用程序(例如“魔獸世界”或“使命召喚3”),GPU(圖形處理單元)的使用率將大幅下降。


1
2017-12-05 20:57



由於沒有任何鍵盤/鼠標窗口消息來響應,交互式程序不必“識別何時最小化”以使用較少的CPU。 - Random832
@ Random832我不確定你的意思是什麼,但我的意思是傳達當它失去焦點時暫停的程序類型(如游戲)。這些遊戲通常在最小化時使用較少的CPU功率。 - wizlog


我會說它確實使用更少的資源,因為它沒有更新它的窗口。

http://msdn.microsoft.com/en-us/library/dd145193(v=VS.85).aspx


1
2017-12-06 10:30





雖然據我所知,它在Windows 7中不可用,但在Windows 8中,暫停了最小化的程序。


0
2017-12-08 06:32



對於經典節目也是如此嗎?它是必要的地鐵,因為你無法真正關閉軟件 - Journeyman Geek♦
是的,至少這是我在測試版中看到的。 (使用的例子是Internet Explorer,非地鐵版) - soandos
最好等到Win8被釋放,而不是推測從早期的測試版中可能會或不會發生什麼。 - Jeff Atwood
那麼地鐵應用程序的懸掛部分無法消失,所以我對其餘的懸掛系統保持相對自信。它也是當前win7系統的一部分,雖然它不是自動的。 - soandos