1
1
什么操作系统,是32位还是64位?你用什么来确定内存使用量? 当您说要显式释放这些对象时,是否意味着您正在使用Marshal.ReleaseComObject()? 我假设您的<%@Page>标记中有AspCompat=true。。。如果你不这么做的话就不会指望它跑了。
我的第一个怀疑,仅仅基于我目前所读到的信息,是500Mb并不是实际使用的总内存,和/或是内存碎片问题。我已经看到,当使用的内存不足一半时,I is进程会出现这种情况,并且错误往往是随机的,这取决于当时创建的对象。顺便说一下,80070008是“没有足够的存储空间”。 当然,32位计算机上的进程限制是2GB,但即使进程没有使用完整的2GB,如果在创建对象时没有所需大小的连续内存块,则在尝试分配时会出现内存不足错误。大量并发用户意味着许多COM对象(和其他对象)在短时间内被分配和释放。。。这就意味着作为嫌疑犯的分裂。 制定攻击计划需要更多关于COM对象及其使用方式的信息。 |
2
2
解决了的!原来该对象正在创建一个窗口句柄,而我们达到了10K窗口句柄的限制(除了在IIS中由于某种原因在2K实例中发生的情况外) |
3
0
使用命令模式在异步线程中排队和执行com互操作。这可以释放iis使用的线程数,并允许您控制com应用程序的调用/实例数。 |
4
0
您可以考虑对象池,而不是每次都创建一个新对象。 |
Saravanan Sachi TheSharpieOne · 在VB中调用Excel函数的任何方法。NET作为Microsoft。办公室互操作。Excel在服务器中抛出未注册的类(REGB\u E\u CLASSNOTREG)? 7 年前 |
IS4 · 无参考的封送[in]参考 7 年前 |
Water Cooler v2 · 如何在Java中进行COM互操作? 7 年前 |
Eugen · _bstr_r与_T(“”) 10 年前 |
Builder · 应用程序退出后留在内存中 10 年前 |