[英]C# Memory Usage Problem
我有一個方法,它將pdf文本轉換為列表。 在該過程之后,內存使用量增加太多。 例如,一個1000頁的pdf使用300mb的內存,而我無法釋放它。 我已經閱讀了一些LOH文章,但沒有找到解決方案。
public List<string> GetTextFromPdf()
{
if (_pdfDoc.Pages == null) return null;
List<string> ocrList = new List<string>();
foreach (var words in _pdfDoc.Pages.Select(s => s.Value.WordList))
{
ocrList.AddRange(words.Select(word => word.Word).Select(input => Regex.Replace(input, @"[\W]", "")));
}
GC.Collect();
return ocrList;
}
對於100兆.pdf來說,這是正常的。 您將整個內容加載到內存中,這將占用兩倍的內存,因為.NET中的字符需要2個字節。 您還將在列表的大對象堆中創建一堆垃圾。 添加典型的.NET運行時開銷,並且300兆字節並不是意外的結果。
檢查此答案以獲取有關使用List <>。Capacity屬性如何幫助減少LOH需求的詳細信息。
檢查您的pdf加載器是否在某處被引用-以便將其丟棄。
您的pdf庫基於COM嗎? 完成引用后,可能需要在某些引用上調用Marshall.releasecomobject。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.