我们正在开发产品,突然发现产品中使用的一个第三方控件在使用的时候,没刷新一次就让程序增加一些句柄。
那个控件我们是看不到源码的,也不知道这些泄漏的句柄到底是什么东东。现在我们看到程序占用的句柄数已经超过10000了,程序还在运行,没看出异常。前几天看到GDI对象数目如果达到一万,程序就不能刷新界面了。我很想知道,对于一个应用程序来说,它所能拥有的句柄数最大是多少?

解决方案 »

  1.   

    这儿数字没个明确,但GDI对象的确超过了10000就会异常退出或出现些怪怪的问题。我估计微软会将它设置为32768或65536之类的东东。
      

  2.   

    Number of GDI object handles is 12,000 per process, 16,000 systemwide
    袁峰的《Windows Graphics Programming Win32 GDI and DirectDraw》
      

  3.   

    我想知道你测试的句柄指的是什么句柄?
    线程?gdi?还是别的什么?
      

  4.   

    ====================================
    Number of GDI object handles is 12,000 per process, 16,000 systemwide
    袁峰的《Windows Graphics Programming Win32 GDI and DirectDraw》
    ====================================比較可信
      

  5.   

    用户能自定义的HANDLE是10000个
    每个线程的消息栈装满才会出问题,这个栈大概也是10000吧
    每个进程可以有很多线程的
      

  6.   

    应该是有限的,尤其是在用GUI,开着开着就白屏了。