簡體   English   中英

C#內存使用問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM