博客日历 |
« July 2025 » |
日 |
一 |
二 |
三 |
四 |
五 |
六 |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
|
|
日志归档 |
三月, 2006
四月, 2006
五月, 2006
六月, 2006
七月, 2006
十月, 2006
十一月, 2006
十二月, 2006
一月, 2007
二月, 2007
三月, 2007
四月, 2007
全部...
|
|
博客统计 |
分类: 9
文章: 204
评论: 0
标签: 3
附件: 103
引用: 0
今日访问: 31019
总访问量: 25000527 |
|
|
win32k桌面堆栈分配失败 |
问题现象:
服务器运行一段时间以后,无法打开新的图形界面程序,很多图形程序的一些菜单或者按钮点击后无效,在系统日志中会看到win32k的警告,信息为桌面堆栈分配失败。
只要注销一下就可以解决问题,但是原因到底在哪里呢?
引用下文:
如果你跟我一样,有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)。原來,對茶包射手來說,�\氣也很重要!!
测试后继续...... |
|
|
Submitted
by 多情浪子 on 2014, March 12, 7:22 PM |
«
上一篇
|
下一篇
»
添加评论
|
|
|