我可以做些什么来缓解Windows中的GDI资源泄漏吗?


3

所有Windows系统都存在一个问题,即可以在系统范围内使用的图形基元受到限制。这导致了以下情况:一旦我开始了几个(实际上类似于25+)GUI等丰富的应用程序,如Visual Studio或Internet Explorer,我无法打开更多的窗口 - 取决于应用程序如何对此做出反应,或者没有任何反应或报告错误。

有什么我可以在Windows中调整至少使这些原语的上限更高?


1
它不是“泄漏”,它是一个“限制”
Steven A. Lowe

让我想知道为什么在任何一个时间点你需要25个Visual Studio实例。
乔伊2009年

好吧,在其他项目,Outlook和多个IE实例中查看5个VS实例是非常典型的。这足以达到极限。
sharptooth 2009年

Answers:


3

看看这篇MSDN文章。它解释了如何增加系统中GDI对象的限制

这篇MSDN文章解释了如何增加User对象的限制。


1
这两个链接仅指出如何更改每个进程的限制。这不会影响OP遇到的系统范围限制。默认情况下,单个进程的10k句柄限制非常充足。VS只吃了大约500个。
乔伊2009年

3

这篇Microsoft NTDebugging文章详细解释了桌面堆如何耗尽并防止打开其他窗口。实际上,这是我自己在Windows 2000和Windows XP工作站上打开大量程序的问题的关键解决方案。在我修复它之前,我不得不将“3072”值增加到“8192”,之后,我再也没有用完手柄,即使同时打开310个Chrome标签,另外还有大约20个其他应用程序在4GB RAM WinXP 32上 - 位系统。


我不了解你,但是一旦我在4GB Windows 7上超过100个标签,我的Chrome几乎停止了...
Bigbio2002 2013年

我的4GB WinXP 32位系统现在在26个Chrome窗口中有1,018个标签。是的我知道这很疯狂。您应该通过ProcExp进行监视,以查看CPU,磁盘或Flash进程是否是您的瓶颈。100个标签对于平稳运行的系统来说无关紧要!
Syclone0044 2013年

当你尝试切换标签时,一切都会停止,还是一切都很顺利?我打赌它与我的图形驱动程序有关...
Bigbio2002 2013年

现在,我在SSD上有我的页面文件,这一切都很顺利。在此之前,我在3.3GB RAM 32位系统上使用8GB Commit。现在我可以使用9GB提交,因为SSD页面文件访问速度非常快,所以它甚至不会减速。
Syclone0044 2013年

啊,你有一个SSD,解释它...幸运的混蛋;)
Bigbio2002 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.