在系統上的每個桌面物件都有與之相關聯的桌面堆疊。桌面物件使用堆來儲存選單、 掛鉤、 字串,和視窗。系統將從系統範圍內的 48 mb 緩衝區分配桌面堆。除了桌面的堆印表機和字型驅動程式也使用該緩衝區。
桌面機將與視窗站相關聯。視窗站可包含零個或多個桌面。桌面堆分配為與視窗站的桌面的大小可以更改以下登錄檔值中。
注意microsoft 不建議使用 / 3gb 開關。在 boot.ini 檔案中指定了 / 3gb 開關。
hkey_local_machine\system\currentcontrolset\control\session manager\subsystems\windows
此登錄檔值的預設資料看起來類似於以下 (所有內容均在一行上):
sharedsection=1024,3072,512 windows=on subsystemtype=windows
serverdll=basesrv,1 serverdll=winsrv:userserverdllinitialization,3
serverdll=winsrv:conserverdllinitialization,2 profilecontrol=off
maxrequestthreads=16
後面的數字值"sharedsection ="控制項如何桌面堆分配。這些 sharedsection 值指定以千位元組為單位)。沒有與互動式和非互動式視窗站的桌面的單獨設定。
注意如果修改了登錄檔中的sharedsection值,則系統必須重新啟動之前所做的更改生效。
重要此分割槽、 方法,或任務包含告訴您如何修改登錄檔的步驟。但是,如果登錄檔修改不當可能會出現嚴重問題。因此,請確保您仔細按照這些步驟。附加的保護登錄檔之前先備份您對其進行修改。然後,您可以在出現問題時還原登錄檔。有關如何備份和還原登錄檔的詳細資訊,請單擊下面的文章編號,以檢視 microsoft 知識庫中相應的文章:
322756
( ) 如何備份和還原在 windows 登錄檔
第乙個 sharedsection 值 (1024) 是到所有桌面公共共享的堆大小。這包括持有控制代碼視窗、 選單、 圖示、 游標,和等) 和共享的系統設定全域性控制代碼表。是不可能您將需要更改此值。
第二個 sharedsection 值 (3072) 是為與"互動式"視窗站 winsta0 相關聯的每個桌面桌面堆的大小。使用者物件 (如掛接、 選單、 字串,和視窗會消耗此桌面堆中的記憶體。是不可能將需要更改此第二個 sharedsection 值。
在 $ 互動式視窗工作站中建立的每個桌面使用預設的 3072 kb 桌面堆。預設狀態下,有三個台式計算機由系統建立 winsta0 中:
第三個 sharedsection 值 (512) 是為"非互動式"視窗站與相關聯的每個桌面桌面堆的大小。如果不存在此值為非互動式視窗站桌面堆的大小將與為互動式視窗站 (第二個 sharedsection 值) 指定的大小相同。
如果僅有兩個 sharedsection 值,您可以新增"、 512"作為第三個值以指定在非互動式視窗工作站中建立的台式電腦桌面堆的大小。
每乙個使用者帳戶下執行的服務程序將在建立服務控制管理器 (scm) 的非互動式視窗站收到乙個新的桌面。因此,使用者帳戶下執行每個服務將消耗桌面堆在第三個 sharedsection 該值中指定的千位元組數。在 $允許服務與桌面互動進行與本地系統帳戶下執行的所有服務 不 選定的共享的非互動式服務視窗站 (服務-0x0 3e7 $) 中的"預設"桌面桌面堆。
在互動式和非互動式視窗站中使用的總桌面堆必須適合 48 mb 系統範圍內緩衝區。
遞減第二個或第三個 sharedsection 值將增加可建立在相應的視窗站的桌面機的數量。較小的值將限制掛鉤、 選單、 字串,和可以建立乙個桌面中的視窗的數。另一方面,增加第二個或第三個 sharedsection 值將減小桌面可建立的數,但它會增加的掛鉤、 選單、 字串,和可以建立乙個桌面中的視窗數。
由於 scm 在非互動式視窗站的使用者帳戶下執行的每個服務程序中建立乙個新的桌面,較大的桌面值的第三個 sharedsection 值將減少在系統可以成功地執行的使用者帳戶服務的數目。可以指定為第二個或第三個 sharedsection 值的最小值是 128。 若要使用較小的值的任何嘗試將預設為 128。
桌面堆由 user32.dll 分配乙個過程時需要的使用者物件。如果不依賴於 user32.dll 應用程式,它將不消耗桌面堆。
注意在 windows server 2003,當滿足下列條件之一為真時在系統事件日誌中記錄特定的事件:
在 windows server 2003,系統範圍的緩衝區是 20 mb,當滿足下列條件之一為真時:
補充:桌面堆疊耗盡的原因有兩種一種是沒有安全的呼叫系統動態鏈結庫user32.dll和kernel32.dll,另外一種就是桌面堆疊真的被耗盡了。通過分析,之所以導致此問題是由於長期使用遠端桌面terminal services 導致緩衝區只有20mb而沒有滿足互動式程序呼叫需要的48mb所導致。
附錯誤資訊: warning: 243:a desktop heap allocation failed.
C語言函式中定義大陣列耗盡堆疊的問題
今晚上一同學請我幫忙看乙個c程式,gcc編譯時一直抱錯,說是段錯誤。程式本身寫的比較差,但編譯能通過,只是有幾十個警告。兩個小時過去了,在eclipse gcc下沒有找到問題 這個環境還不熟悉 換到了vc下面,逐步除錯,才發現問題出在被main呼叫的乙個叫做readmctal 的函式的前面幾行中。該...
磁碟資源耗盡故障
實驗案例演示 第一,模擬i節點耗盡故障 1.新增一塊硬碟,分割槽格式化,掛載 1 fdisk dev sdb n p 1 幾次回車跳出 w 2 mkfs.ext3 dev sdb1 3 mkdir disk 4 mount dev sdb1 disk 5 df i disk 確認該檔案系統中i節點的...
磁碟資源耗盡故障
1 磁碟檔案容量耗盡時需要清理或轉移占用大量空間的檔案 2 磁碟檔案數量耗盡 當磁碟被格式化成檔案系統時。檔案系統的inode數量就被固定,如果使用者建立了巨量的細小檔案 耗盡節點 那麼可能出現檔案系統有大量的剩餘磁碟空間,但是使用者無法在建立新的檔案 df i 檢視inode數量 df th 檢視...