Я пишу небольшой инструмент для слияния PDF-файлов с использованием библиотеки PDFSharp. Я использую последнюю предварительную версию (1.5) PDFSharp.PDFSharp не удаляет ресурсы (утечка памяти)
Я сталкиваюсь с проблемой, когда документы, которые загружаются в память, не выпускаются при выходе из области видимости. Я разыскал эту утечку памяти в следующей части кода:
using (var mergedDocument = new PdfDocument())
{
for (var i = 0; i < SelectedDocuments.Count; i++)
{
using (var document = PdfReader.Open(SelectedDocuments[i].FilePath, PdfDocumentOpenMode.Import))
{
for (var j = 0; j < document.PageCount; j++)
{
mergedDocument.AddPage(document.Pages[j]);
}
}
}
mergedDocument.Save(savePath);
}
Примером может быть у меня есть 10 документов в формате PDF, которая насчитывает на 178 Мб. Созданный объединенный документ также составляет около 178 Мб. Когда вышеприведенный код заканчивает выполнение использования памяти, он занимает 356 Мб. Когда я объединять больше документов, эта утечка памяти продолжает расти и в конечном итоге вызывает крушение.
Я попытался удалить с помощью операторов и использовать Dispose(), когда захочу, чтобы документ был выпущен из памяти, однако он не работает.
Любая помощь будет оценена по достоинству. Спасибо.
Edit:
Чтобы быть более точным:
var parentDirectory = Directory.GetParent(SelectedDocuments[0].FilePath);
var savePath = parentDirectory + "\\MergedDocument.pdf";
using (var mergedDocument = new PdfDocument())
{
for (var i = 0; i < SelectedDocuments.Count; i++)
{
using (var document = PdfReader.Open(SelectedDocuments[i].FilePath, PdfDocumentOpenMode.Import))
{
for (var j = 0; j < document.PageCount; j++)
{
mergedDocument.AddPage(document.Pages[j]);
}
}
}
mergedDocument.Save(savePath);
}
SelectedDocuments список, который имеет кучу путей файлов в выбранных PDF файлов.
Просьба MCVE: http://stackoverflow.com/help/mcve –
Вы пробовали LOH уплотнению? https://msdn.microsoft.com/en-us/library/system.runtime.gcsettings.largeobjectheapcompactionmode(v=vs.110).aspx –
Профилировали ли вы свое приложение, чтобы узнать, что удерживает память от выпуска? –