已超出Notes可以支持的最大内存段数

时间:2010-01-08 15:33:23

标签: c# lotus-domino interop-domino

我正在使用Domino.dll访问C#.NET 2.0中的NSF文件

我使用多个线程一次访问4个NSF文件,它适用于小型NSF文件,但如果我尝试访问大型NSF文件,我会得到 Out of Memory 异常和< strong>已超出Notes可支持的最大内存段数。

当我在while循环中从大型 NSFVIewFolder 访问 NotesDocument 对象时,通常会发生此异常。

我使用Marshal.ReleaseComObject(NotesDocument)释放 NotesDocument 的实例;仍然会引发同样的异常。

我的目标是一次访问多个NSF文件(一次最多4个NSF文件),以获取大型NSF文件(可能是GB)。

2 个答案:

答案 0 :(得分:1)

我不熟悉C#接口,但是使用Java,您需要在继续下一个文档之前显式调用notes文档中的recycle()方法。如果不这样做,将意味着不会清理与备注文档相关的资源。

答案 1 :(得分:1)

您的问题类似于this问题。您使用什么版本的Domino来访问数据库?你需要有效地破坏对象。我认为ReleaseComObject不会有效地释放服务器也会用来向COM提供数据的内存,从而耗尽内存。

我建议你尝试使用Java来实现这一点,因为内存管理比COM更好。 This文章和this应该帮助编写Java for Java。 This简单示例让您了解如何完成文档集合。