当前位置:  开发笔记 > 运维 > 正文

什么是Windows"USER对象"

如何解决《什么是Windows"USER对象"》经验,为你挑选了2个好方法。

我正在尝试跟踪我们的MFC代码中看起来像资源限制问题的问题.内存和CPU看起来很好.根据任务管理器上的进程选项卡,我们的GDI对象与其他应用程序一致,但我们的USER对象似乎比其他应用程序大10倍.

什么是"USER对象",有什么限制?



1> Otávio Décio..:

在这里阅读所有相关内容:

对象类别

系统提供三类对象:用户,图形设备接口(GDI)和内核.系统使用用户对象来支持窗口管理,GDI对象支持图形,内核对象支持内存管理,进程执行和进程间通信(IPC).有关创建和使用特定对象的信息,请参阅相关概述.

用户对象

用户界面对象仅支持每个对象一个句柄.进程无法继承或复制用户对象的句柄.一个会话中的进程无法引用另一个会话中的用户句柄.

每个会话的理论限制为65,536个用户句柄.但是,每个会话可以打开的最大用户句柄数通常较低,因为它受可用内存的影响.用户句柄也有默认的每进程限制.要更改此限制,请设置以下注册表值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

该值可以设置为200到18,000之间的数字.



2> Aardvark..:

这是一篇"经典"MSDN文章:给我一个句柄,我会告诉你一个对象

上次我跟踪Windows对象泄漏(我怀疑你有)Process Explorer很方便(handley?).下窗格可以显示一些已分配的系统对象,另外它可以执行简单的USER,GDI等对象计数.

在桌面堆,这是一个内存池,在那里真正的"东西"把手代表生命(至少一些把手,至少不内核处理).有时并没有分配多少句柄,而是该句柄下的每个对象使用了多少内存.您可以通过这种方式调试堆.安装很痛苦.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有