2010-01-08 3 views
2

Я использую Domino.dll для доступа к NSF файл в C# .NET 2.0Максимальное количество сегментов памяти, примечания могут поддерживать превышено

Я использую несколько нитку доступа 4 NSF файлов одновременно, его отлично работает для небольших файлов NSF, но если я пытаюсь получить доступ к большим файлам NSF, я получаю Недостаток памяти Исключение и Превышено максимальное количество сегментов памяти, поддерживаемых Notes..

Это исключение обычно происходит, когда я получить доступ к NotesDocument объекта из большого NSFVIewFolder в цикле.

Я освобождаю экземпляр NotesDocument с помощью Marshal.ReleaseComObject (NotesDocument); тем не менее он вызывает одно и то же исключение.

Моя цель - получить доступ к нескольким файлам NSF за один раз (файлы MAX 4 NSF за раз) для больших файлов NSF (может быть в GB).

+5

Примечания Lotus: aaaaaargh! –

+0

Пожалуйста, не задавайте свои вопросы. – SLaks

+0

Ребята, которые задумали и разработали Lotus Notes, должны были быть невероятно умными, даже одаренными. Так произошло WTF? –

ответ

1

Я не знаком с интерфейсом C#, но с Java вам необходимо явно вызвать метод recycle() в документе заметок, прежде чем переходить к следующему документу. Несоблюдение этого означает, что связанные ресурсы с документом заметок не будут очищены.

1

Ваша проблема аналогична проблеме this. Какую версию Domino вы используете для доступа к базе данных? Вам нужно эффективно уничтожить объект. Я не думаю, что ReleaseComObject эффективно освобождает память, которую сервер также будет использовать для предоставления данных COM, и заканчивая нехваткой памяти.

Я предлагаю вам попробовать Java для этого, так как управление памятью намного лучше, чем COM. This статьи и this следует написать Java для Domino. This Простой пример дает вам представление о том, как пройти через коллекцию документов.

Смежные вопросы