修復 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 介面是非常重要的。这确保了当类不再需要时,资源能被正确释放。()方法 - 它可能是 iDisposable** __並且需要開發人員在使用完成後告知它。

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

-使用實現IDisposable的對象

-尋找、修復及避免 C# .NET 中的記憶體洩漏:8 個最佳做法

如果您未手動處理每一個 iDisposable 類別實例,可能會在您的代碼中造成內存洩漏。

  • System.IO.Stream - 被 PdfDocument.Stream 屬性所返回的
  • System.Drawing.Image / System.Drawing.Bitmap - 被 PdfDocument.PageToBitmap 方法返回的
  • IronPdf.PdfDocument - 本身也標記為 iDisposable,因為它可能在我們之後的 2021 - 2024 發行版中包含非管理對象。

最常見的解決方案

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

using(var stream=我的PdfDocument.Stream){// 執行操作}```


在 C# 8 中甚至有一個**簡寫**版本,没有{}閉包

`using var stream=myPdfDocument.Stream;`

## 3.收集垃圾

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

可以在應用程式生命週期的安全時機手動指示 .NET 垃圾收集器處理其未使用的對象:
- 無法渲染PDF
- 有一個 iDisposable 物件開啟中。

### 一種方法是這樣做

```cs
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();

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

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

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

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

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

https://ironpdf.com/troubleshooting/engineering-request-pdf/

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

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