【发布时间】:2010-12-21 02:40:35
【问题描述】:
我有一个使用旧版 COM 互操作库的 asp.net 应用程序。工作正常,直到内存达到 500Mb 左右,然后它不再能够创建新的 COM 对象(获得各种异常,例如从 IClassFactory 创建具有 CLSID {FFFF-FFFF-FFFF-FFF-FFFFFF} 的 COM 组件的实例失败由于以下错误:80070008。)。几乎看起来它正在达到某种内存限制,但它是什么?可以改吗?
已解决!原来该对象正在创建一个窗口句柄,而我们达到了 10K 窗口句柄的限制(除了在 IIS 中出于某种原因在 2K 实例上发生)
【问题讨论】:
-
您是否正确处理了这些 COM 对象?
-
是的,我明确地发布了它们。问题不在于它正在泄漏内存,内存利用率是正常的——只是有很多并发用户。服务器仍然有大量的 RAM,但不知何故它卡住了。 (刚刚进行了另一次测试,仅使用 100Mb 就出现了问题……很奇怪)
-
这些 COM 对象是在进程内还是进程外?他们的公寓型号是什么?它们是否标记为 Aparment、Free、Both、Single?操作系统是 32 位还是 64 位?这些组件是否与 Shell 或某些 UI 相关联?
-
@Simon 你真的在上面,原来 COM 对象正在创建一个窗口对象。
标签: asp.net com-interop