Превышено максимальное количество сегментов памяти, которые может поддерживать Notes - PullRequest
2 голосов
/ 08 января 2010

Я использую Domino.dll для доступа к файлу NSF в C # .NET 2.0

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

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

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

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

Ответы [ 2 ]

1 голос
/ 25 марта 2010

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

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

1 голос
/ 24 февраля 2010

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

...