从注册表看Windows系统进程GDI句柄及进程句柄数上限

       以前我们在讲到GDI对象泄漏问题时,我们经常会说,当进程的GDI对象达到或接近10000个时UI窗口就会绘制异常,紧接着就会发生闪退。因为进程的GDI对象总数是有上限的,默认上限10000个,不能超过这个上限值。

       那这个上限值是如何设置的呢?在哪里可以修改呢?其实是保存在注册表中的,对应的路径为:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows

不仅进程的GDI对象有上限,进程的句柄数(比如线程句柄、时间句柄等各种句柄)也是有上限的,默认也是10000个。注册表对应的节点配置如下:

这两个配置项的说明如下:

1)GDIProcessHandleQuota项:设置GDI句柄数量,默认值为2710(16进制)/10000(10进制),该值的允许范围为 256 ~ 16384 ,将其调整为大于默认的10000的值。如果您的系统配置了2G或更多内容,不妨将其设置为允许的最大值 16384(10进制)。

2)USERProcessHandleQuota项:设置用户句柄数量,默认值同样为2710(16进制)/10000(10进制),该值的允许范围为 200 ~ 18000 ,将其调整为更多的数值。同样地,对于具有2GB或更多物理内存的系统,不妨将用户句柄数直接设置为上限 18000(10进制)。

猜你喜欢

转载自blog.csdn.net/chenlycly/article/details/80076343