Windows桌面開太多東西就「怪怪的」

如果你跟我一樣,有4G以上的RAM,又喜歡在桌面同時開一缸子程式節省來回切換的時間,你應該有遇到以下情境的經驗:

明明RAM還有剩很多,電腦卻開始不聽始喚: 新程式的畫面出不來、程式視窗關不掉(按右上角的X沒用)、選單項目不見、視窗一片空白、右鍵選單出不來… 設法關掉一些程式後,記憶體用得少了,系統就又恢復正常

被這問題困擾很久,也請教不少專家,都沒得到明確的解答,大部分的人刻板印象是: Windows在記憶體用很多時,就會怪怪的,不太穩… 而關掉程式釋放一些Memory後就會恢復,似乎也印證了這個講法有幾分道理。

一直以來,我除了接受這個籠統且對Windows帶點歧視的結論之外,也沒有其他選擇。直到幾前天,我很幸運地在事件檢視器中發現這個錯誤訊息:

Failed to create a desktop due to desktop heap exhaustion.

用這個錯誤訊息Goggle到相關文章,我才搞懂,RAM再多,Desktop Head Size卻是固定的,用完了就有可能導致桌面不正常,例如: 新視窗開不起來。推敲了一下,我覺得這個限制極有可能就是造成RAM剩很多,桌面操作卻開始不正常的元凶!!

另外,我還找到了dheapmon這個好工具,可以測量Desktop Head的用量,就待下回出問題時,再來好好地剖析一下。

昨天,桌面開了一堆東西,想開Word檔案,卻發現Word只出現外框,文件開不出來。機不可失,興奮地用顫抖的手開啟dheapmon檢查:

C:\Program Files\Debugging Tools for Windows\DskHeapMon\x86>dheapmon
Desktop Heap Information Monitor Tool (Version 8.1.2925.0)
Copyright (c) Microsoft Corporation.  All rights reserved.
-------------------------------------------------------------
Session ID:    0 Total Desktop: (  6848 KB -   10 desktops)
WinStation\Desktop            Heap Size(KB)    Used Rate(%)
-------------------------------------------------------------
WinSta0\Default                    3072             99.8
WinSta0\Disconnect                   64              4.0
WinSta0\Winlogon                    128              8.2
Service-0x0-3e7$\Default            512             13.6
Service-0x0-3e4$\Default            512              3.2
Service-0x0-3e5$\Default            512              1.2
SAWinSta\SADesktop                  512              0.8
__X78B95_89_IW\__A8D9S1_42_ID       512              0.4
Service-0x0-1eefc$\Default          512              1.2
Service-0x0-27435$\Default          512              1.4
-------------------------------------------------------------

Bingo!!! 命中要害,Heap用掉99.8%,關掉一些程式,降到86%後,系統就又正常了。由此,我可以確認這個困擾已久的問題,就是肇因於Desktop Heap耗盡。依著MS KB的說明(看英文版比較好,“Out of Memory” error message = 「 郵件答錄機的記憶體 」 錯誤訊息,算你狠!!),調成SharedSection=1024,8192,512(原來的值是3072[註: x64 OS預設20M起跳],原本只敢小小加到4096,但看到有人開到8192也沒事,加上這個數字調大的影響似乎只會影響同時連線的Terminal Service Session數,對我的工作機不是問題,索性就一口氣開上8M),從此就可以盡情地開視窗了,再也不怕桌面瘋瘋顛顛了。

【參考資料】

題外話,很多時候,所謂的”不穩”、”怪怪的”、”見鬼了”,多半另有隱情,搞通了就不再詭異,對系統的掌握度也就更上一層樓了。

不過,是否真能揪出背後的元凶,跟追問題者的積極度(像遇到我這種不信邪的瘋子)、錯誤訊息的明確性(例如: 只知桌面不知使喚,沒有任何警告或提示)、有無適當的偵測工具(dheapmon好棒),都很有關係。在本案例,要不是無意發現Desktop Heap耗盡的錯誤訊息,我對此問題的認知,大概永遠只停留在”Windows桌面開很多東西就會不穩”的層次(没給User明確的訊息,Windows背負這個污名也是活該吧XD)。

本文引自:http://blog.darkthread.net/post-2008-07-31-desktop-heap-issue.aspx


已發佈

分類:

作者:

標籤:

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *