Behebung von Speicherlecks 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 Ingenieure arbeiten an einem Hotfix, sobald ein Speicherleck erkannt wird.

So melden Sie ein Speicherleck an support@Iironsoftware.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 entsorgt haben.

Die überwiegende Mehrheit der gemeldeten Speicherlecks wird durch unsachgemäße Verwendung der .NET IDisposable Schnittstelle verursacht.

Wenn eine .NET Klasse eine Dispose()-Methode hat, handelt es sich wahrscheinlich um eine IDisposable-Methode, und der Entwickler muss ihr mitteilen, wann er sie nicht mehr benötigt.

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.

Wenn Sie es versäumen, jede Instanz der Klasse IDisposable manuell freizugeben, kann dies zu einem Speicherleck in Ihrem Code führen.

  • System.IO.Stream - das von der PdfDocument.Stream Eigenschaft zurückgegeben wird.
  • System.Drawing.Image / System.Drawing.Bitmap - das von der Methode PdfDocument.PageToBitmap zurückgegeben wird.
  • IronPdf.PdfDocument - selbst ist ebenfalls mit IDisposable gekennzeichnet, da es in unseren späteren Releases 2021 - 2024 möglicherweise nicht verwaltete Objekte enthält.

Die häufigste Lösung

Die beste Lösung ist oft die Verwendung einer using-Anweisung, wenn auf IDisposable-Objekte verwiesen wird.

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

In C# 8 gibt es sogar eine Kurzform ohne {} Closures.

using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
using var 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 ist geöffnet

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
$vbLabelText   $csharpLabel

Nach diesem Vorgang sollte der Graf von der Speichernutzung auf ein normales, aber nicht null Niveau sinken.

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. Wenn Sie mit "niedrigstufigen" oder Systemobjekten wie HTML-Rendering, Interop, Grafiken und Streams arbeiten, werden sie möglich. 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 17,803,474 | Version: 2026.3 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.