d:\nt\com\complus\src\comsvcs\threads \stathread.cpp(285)
    文章作者:恒爱网络 阅读次数:6677 发布时间:2016-6-21

    运行时环境检测到其内部状态存在不一致。这阐明过程中存在潜在的不坚固性,可能是由于 COM+ 利用程序中运行自定义组件、COM+ 利用程序使用的组件或其他因素引起的。d:\nt\com\complus\src\comsvcs\threads \stathread.cpp(285)中的弊病,hr = 80070008: CSTAThread: CoGetApartmentID failed


    原因】

    具体原因可参考MSDN微软官方团队的说法,针对桌面程序堆(HEAP)弊病。简略的解释就是利用程序池太多,导致 DLLHOST.EXE达到最大的HEAP限制,不是WINDOWS底层的程序员,所以指明确这个弊病大概的原理.


    【解决方案】

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows(右键--修改) –>(找到) SharedSection = 1024,3072,512(在中间)

     

    打开注册表编辑器,将红字部分稍稍调大一些,比如1024,就可以避免堆弊病。可以重复试验.


    Desktop heap用光的原因往往是太多进程同时运行,或者创建了太多GUI object
    怀疑是Desktop heap相关问题的时候,首先可以用下面这篇文章的方法来检查是否Desktop heap用光:

    1. 首先,先到 Desktop Heap Monitor Version 8.1 下载安装程式。

    2. 安装的时候预设会自动解压缩相关档案到 c:\kktools 目录下,但并不会自动执行。

    3. 接下来就直接执行以下的批次档,就可以自动完成所有应该的动作了。以下是批次档的内容:


    复制代码  

    1. @echo off

    2. cd /d c:\kktools\dheapmon8.1\x86

    3. dheapinst.exe -y srv*http://msdl.microsoft.com/download/symbols

    4. dheapmon.exe -l

    5. dheapmon.exe > %TEMP%\dheap.txt

    6. start %TEMP%\dheap.txt

    7. dheapmon.exe -u

    8. dheapinst.exe -r


    如果确认是desktop heap问题后,可以参考改变注册表来做调整。

    通过regedit.exe命令进入注册表,根据一下路径查找注册表参数:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows
    其中,Windows是一个字符串参数,默认值如下(每一部分以空格间隔):
    %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16




    当你想看目前 Desktop Heap Size 时,直接点选批次档就可以完成所有步骤了,且批次档会自动将 driver 卸载,不会对你的电脑造成负担。


    3072 修改8192,10240,15360,20480 等数值...



    MaxRequestThreads 这个参数约定了可以管理的最大线程数量,这个数量默认近为16 也有人修改此参数到80(有没有效就不得而知)

    microsoft号称修改SharedSection的第二个值,即3072,把该值改成“4096”或是“8192”后就可以解决运行大量程序时报内存不足的问题。
    MS把这个值叫做“desktop heap”。


    如果通过以上多种方法仍然出现这个错误,建议检查下 ASP网站的目录权限,有时候错误的权限会导致此错误提示的发生。