Behebung von Speicherlecks in IronPDF
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@ironsoftware.com :
1. Aktualisieren Sie auf die neueste IronPDF-Version
Wenn Sie es noch nicht getan haben, bitte aktualisieren Sie auf die neueste IronPDF-Version.
2. Stellen Sie sicher, dass Sie Ihre IDisposable-Objekte entsorgt haben
Die überwiegende Mehrheit der gemeldeten Speicherlecks wird durch die unsachgemäße Verwendung der .NET-Schnittstelle IDisposable verursacht.
Wenn eine .NET-Klasse eine Dispose()-Methode hat, ist sie wahrscheinlich IDisposable und erfordert, dass der Entwickler ihr mitteilt, wenn 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.
- Verwenden von Objekten, die IDisposable implementieren
- Finden, Beheben und Vermeiden von Speicherlecks in C# .NET: 8 Best Practices
Wenn Sie nicht jede IDisposable-Klasseninstanz manuell entsorgen, kann dies zu einem Speicherleck in Ihrem Code führen.
- System.IO.Stream – das von der Eigenschaft
PdfDocument.Streamzurückgegeben wird. - System.Drawing.Image / System.Drawing.Bitmap – das von der Methode
PdfDocument.PageToBitmapzurückgegeben wird. - IronPdf.PdfDocument – ist selbst ebenfalls mit
IDisposablegekennzeichnet, da es in unseren späteren Releases von 2021 bis 2024 möglicherweise nicht verwaltete Objekte enthalten wird.
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
}
Using stream = myPdfDocument.Stream
' Perform operations with the stream here
End Using
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
Dim stream = myPdfDocument.Stream
' Perform operations with the stream here
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
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
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.

