Fixing Memory Leaks in IronPDF

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

Wenn Sie ein scheinbares Speicherleck in IronPDF feststellen, möchten wir davon erfahren. Unsere erfahrensten Ingenieure werden sich sofort mit einem Speicherleck befassen, um schnell einen Hotfix zu entwickeln, sobald es identifiziert wurde.

So melden Sie ein Speicherleck an support@ironsoftware.com :

1. Aktualisieren Sie auf die neueste IronPdf-Version

Falls Sie es noch nicht getan haben, aktualisieren Sie bitte auf die neueste IronPdf-Version.

2. Stellen Sie sicher, dass Sie Ihre IDisposable-Objekte freigegeben haben

Die überwiegende Mehrheit der gemeldeten Speicherlecks wird durch unsachgemäßen Gebrauch der .NET-IDisposable-Schnittstelle verursacht.

Wenn eine .NET-Klasse eine Dispose()-Methode hat - ist sie wahrscheinlich IDisposable und erfordert, dass der Entwickler angibt, wann er sie nicht mehr verwendet.

Es gibt ein weit verbreitetes Missverständnis, dass C# eine „verwaltete“ Sprache ist, die keine Verantwortung des Entwicklers zur Speicherverwaltung erfordert. Im Gegensatz zu diesem Glauben gibt es tatsächlich viele gemeinsame .NET-Objekte, die Entwickler versäumen freizugeben.

Das manuelle Versäumnis, jede IDisposable-Klasseninstanz freizugeben, kann in Ihrem Code ein Speicherleck verursachen.

  • System.IO.Stream - die über die PdfDocument.Stream-Eigenschaft zurückgegeben wird.
  • System.Drawing.Image / System.Drawing.Bitmap - die über die PdfDocument.PageToBitmap-Methode zurückgegeben wird.
  • IronPdf.PdfDocument - selbst ist ebenfalls als IDisposable markiert, da es in unseren späteren Versionen 2021 - 2024 nicht verwaltete Objekte enthalten kann.

Die häufigste Lösung

Die beste Lösung ist oft, eine using-Anweisung zu verwenden, wenn auf IDisposable-Objekte Bezug genommen wird.

using(var stream = myPdfDocument.Stream) {
    // Perform operations with the stream here
}
using(var stream = myPdfDocument.Stream) {
    // Perform operations with the stream here
}
Using stream = myPdfDocument.Stream
	' Perform operations with the stream here
End Using
$vbLabelText   $csharpLabel

In C# 8 gibt es sogar eine Verkürzung ohne {}-Schleifen.

using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
Dim stream = myPdfDocument.Stream
' Perform operations with the stream here
$vbLabelText   $csharpLabel

3. Müll sammeln

Der Memory Profiler des Visual Studio-Debuggers kann weiter speicherzuwachs anzeigen, selbst wenn nichts falsch ist. Beim Verwenden eines Systems mit hohem RAM kann die .NET-Laufzeit entscheiden, dass es effizienter ist, den Müll im Speicher zu belassen, bis Ihr Systemspeicher fast voll ist oder sogar eine Auslagerungsdatei zu verwenden.

Es ist möglich, den .NET-Garbage-Collector manuell anzuweisen, ungenutzte Objekte zu einem sicheren Zeitpunkt im Lebenszyklus Ihrer Anwendung zu entsorgen, wenn:

  • Kein PDF gerendert wird
  • Ein IDisposable-Objekt geöffnet ist

Eine Möglichkeit, dies zu tun, ist:

System.GC.Collect(); // Invokes the garbage collector
System.GC.WaitForPendingFinalizers(); // Waits for the process to complete
System.GC.Collect(); // Optional: Runs additional collection to ensure all objects are cleared
System.GC.Collect(); // Invokes the garbage collector
System.GC.WaitForPendingFinalizers(); // Waits for the process to complete
System.GC.Collect(); // Optional: Runs additional collection to ensure all objects are cleared
System.GC.Collect() ' Invokes the garbage collector
System.GC.WaitForPendingFinalizers() ' Waits for the process to complete
System.GC.Collect() ' Optional: Runs additional collection to ensure all objects are cleared
$vbLabelText   $csharpLabel

Danach sollte das Speicherverwendungsdiagramm auf ein normales, aber nicht nullwertiges Niveau absinken.

4. Wenn Sie immer noch ein Speicherleck haben - Melden Sie es

Dies wird als extrem hohe Priorität respektiert. Bitte lesen Sie diesen Leitfaden, der erklärt, wie Sie Ihre Protokolldateien finden und Ihr Problem auf eine Weise melden, dass keine zusätzlichen Informationen angefordert werden.

Dieser 3-minütige Lesedurchgang hilft uns, Ihr Problem mit 100%iger Genauigkeit nachzustellen, sodass wir Ihre Zeit nicht verschwenden.

Anfrage an die Technik als PDF

Vielen Dank - Niemand mag Speicherlecks, auch wir nicht. Beim Arbeiten mit "Low-Level"- oder Systemobjekten wie HTML-Rendering, Interop, Grafik und Streams, treten sie möglich auf. Also lassen Sie uns sie beheben!

IronPDF ist nur das geworden, was es heute ist, weil wir auf die Fehlerberichte und Funktionswünsche unserer Benutzer gehört haben, also danke für Ihre Unterstützung.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 16,154,058 | Version: 2025.11 gerade veröffentlicht