Windows 7中一个进程的GDI对象的上限是多少?

问题描述 投票:17回答:3

具有一个GDI泄漏的应用程序,它将最终导致10,000个分配的GDI对象崩溃。我尝试将GDIProcessHandleQuota增加到20,000,但是当程序达到10,000个对象时,该程序仍然崩溃。我们目前正在修补此泄漏,但出于好奇-是否有办法提高单个过程的GDI限制?还是10k是单个应用程序的硬限制?

windows-7 gdi resource-leak
3个回答
8
投票

有一种可行的解决方案。我在这里处理行为不当的供应商应用程序,该应用程序分配了大量的GDI对象,并且该解决方案使它在大多数时间都可以工作...]

执行

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /v windows

寻找SharedSection=,应为3个数字,以逗号分隔。一次将中间数字增加1024,看看是否能解决您的问题。您正在使用此变量控制“桌面堆”的数量,该变量过去使我无法正常运行GDI。

查看KB184802了解更多信息。搜索SharedSection以找到页面的相关部分。


15
投票

10K是硬性限制。


1
投票

通过更改GDIProcessHandleQuota,我能够将GDI对象从10000增加到15000,但这需要重新启动才能生效。我不必更改SharedSection值,只需要重新启动即可。

© www.soinside.com 2019 - 2024. All rights reserved.