正在使用多少个Windows句柄?” >> [

问题描述 投票:11回答:5
我知道这个问题的答案可能取决于注册表设置和Windows版本,如果没有足够的内存,则取决于RAM的数量。出于这个问题,假定服务器具有足够的RAM(3+ GiB)。

如果一个应用程序(在这种情况下为第三方应用程序)每小时泄漏几百个句柄,那么在其他应用程序遇到麻烦之前,该应用程序可以泄漏多少个句柄? “麻烦”是指例如无法启动线程,无法打开文件等等。

我已经看到一些服务器(轻负载)在使用数以万计的句柄的进程(通常是数据库进程)上运行良好,因此,以前的10000句柄限制显然不是这里的问题。 (而且那是每个进程的限制,因此不会影响我的应用程序,因为在这一点上还不错。)

有人可以回答问题或向我指出一些资源,这些资源解释在有效耗尽(句柄或其他系统资源)之前,Windows服务器将允许多少个总句柄?

我知道这个问题的答案可能取决于注册表设置和Windows版本,如果没有足够的内存,则取决于RAM的数量。为了这个……

windows performance handle
5个回答
17
投票
请参见Raymond Chen's post on this topic。窗口管理器对每个进程强制执行10K的限制,并且整个系统的总限制为32K。因此,如果“每小时”仅泄漏100个句柄,那么您有几天的正常运行时间才能开始出现异常。

5
投票
desktop heap,这是一个内存池,其中句柄代表的实际“材料”存在。

有时不是您分配了多少句柄,而是那个句柄下的每个object


4
投票
由于这些值可能会在新的Windows版本中更改,因此可以使用SysInternals工具TestLimit / TestLimit64进行粗略估算。 x64版本可能会运行一段时间,尤其是用于内存测试(它可能使用硬盘(交换文件)来获取更多的虚拟内存)。

2
投票
根据this,10000。

0
投票
根据this recent blog post,Windows 10中进程的总句柄限制硬编码为16*1024*1024

16,777,216


推荐问答