修復 IronPDF 中的記憶體洩漏

This article was translated from English: Does it need improvement?
Translated
View the article in English

如果您在使用 IronPDF 時遇到明顯的內存泄漏問題,我們希望得知此情況。 我們最資深的工程師一旦發現記憶體洩漏,將會迅速集中力量進行熱修復。

以下是如何向 support@ironsoftware.com 報告記憶體洩漏的方法:

1. 更新至最新的 IronPdf 版本

如果您尚未更新,請升級到最新的IronPdf版本。

2. 確保您已處理您的 iDisposable 物件

大多數報告的記憶體洩漏是由於不當使用 .NET iDisposable 介面造成的。

如果任何 .NET 類別具有 Dispose() 方法 - 可能是 iDisposable 並且需要開發人員告訴它他們何時完成使用。

有一個常見的誤解認為 C# 是一種「管理式」語言,不需要開發者負責管理記憶體。 與這種信念相反,事實上有許多常見的 .NET 對象,開發人員未意識到未處理。

最常見的解決方案

最佳解決方案通常是在引用 iDisposable 物件時使用 using 語句

using(var stream=myPdfDocument.Stream){// 執行操作}

在C# 8中,甚至可以使用簡寫版本而不需要{}閉包

using var stream=myPdfDocument.Stream;

3.收集垃圾

即使沒有任何問題,Visual Studio 調試器記憶體分析器的使用量可能會持續上升。 在使用高RAM系統時,.NET運行時可能會認為讓垃圾在記憶體中停留,直到系統RAM接近滿載,甚至使用交換文件來保持,這樣更有效。

可以在應用程式生命週期的安全時機手動指示 .NET 垃圾收集器處理其未使用的對象:

  • 無法渲染PDF
  • 有一個 iDisposable 物件開啟中。

一種方法是這樣做

System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
System.GC.Collect()
System.GC.WaitForPendingFinalizers()
System.GC.Collect()
$vbLabelText   $csharpLabel

之後,記憶體使用情況圖表應該會下降到正常但非零的水平。

4. 如果您仍然有記憶體洩漏 - 請報告。

這將被視為非常高的優先級。

請閱讀本指南,其中指導如何查找您的日誌文件並進行報告,以便無需再請求額外的信息。

這篇3分鐘的閱讀將幫助我們百分之百準確地重現您的問題,這樣我們就不會浪費您的時間。

故障排除中的工程請求 PDF](https://ironpdf.com/troubleshooting/engineering-request-pdf/

謝謝 - 沒有人喜歡記憶體洩漏,包括我們。 在處理「低階」或系統物件,如HTML渲染、互操作、圖形和流時,它們確實成為可能。 那就讓我們來解決它們吧!

IronPDF之所以能成為今天的模樣,全賴於聽取了用戶的錯誤報告和功能請求,因此感謝您的支持。