Время от времени у ABCpdf заканчивается память
Вопрос
Проект, над которым я работаю, использует сторонний компонент для создания динамических PDF-файлов в VB.Веб-система Net называется ABCpdf.Net.(не самый ужасный инструмент, но и не самый лучший.)
Время от времени, по причинам, которые я не могу понять, объект document выдает исключение SEHException .Копая дальше, оказывается, что это вызвано пользовательским исключением в объекте document типа WebSuperGoo.ABCpdf6.Internal.PDFException.Содержимое содержит только не очень полезный заголовок "Не удалось получить данные изображения.Не хватает памяти " Обычно это происходит при попытке добавить изображение в PDF-файл.Поскольку эти изображения представляют собой PNG размером менее 100 Кб, я предполагаю, что проблема не в их размере.
Кроме того, действительно странным является то, что, как только эта проблема начинает возникать, единственный способ остановить ее, по-видимому, заключается в перезагрузке веб-сервера, что явно немного ниже номинала.
Кто-нибудь когда-нибудь сталкивался с этой проблемой (или даже пользовался этим инструментом?)
Решение 2
Обновление три месяца спустя.
Насколько я могу судить, все проблемы с памятью были решены, когда мы обновили ABCpdf 6 до 7. Казалось бы, версия 7 больше не является COM-объектом с оболочкой .NET, а всем управляемым кодом снизу. вверх. Это все еще не самый лучший генератор PDF, но проблемы утилизации ресурсов, похоже, решены.
Другие советы
Очаровательно.Я пришел к выводу, что именно это, должно быть, и происходит.Вы все еще вызываете doc.Clear() в конце блока using?
Ранее я не видел этой ошибки, но у нас были проблемы с памятью в ABC PDF. Р>
Короче говоря, это НЕ полностью управляемая кодовая база, а просто оболочка .NET для их COM-версии. При этом мы проследили, что проблема использования памяти связана с неправильной утилизацией их объектов.
Итак, вместо:
Dim doc As New Doc()
'etc...
сделай это:
Dim doc as Doc
Using doc As New Doc()
'etc...
End Using