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 unsachgemäßen Gebrauch der .NET IDisposable-Schnittstelle verursacht.
Wenn eine .NET-Klasse eine Dispose()-Methode hat - ist sie wahrscheinlich IDisposable und erfordert vom Entwickler, ihr mitzuteilen, wann sie mit ihrer Verwendung fertig ist.
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 es versäumen, jede IDisposable-Klasseninstanz manuell zu entsorgen, kann dies zu einem Speicherleck in Ihrem Code führen.
- System.IO.Stream - das durch die
PdfDocument.Stream-Eigenschaft zurückgegeben wird. - System.Drawing.Image / System.Drawing.Bitmap - das durch die
PdfDocument.PageToBitmap-Methode zurückgegeben wird. - IronPdf.PdfDocument - selbst als
IDisposablegekennzeichnet, 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
In C# 8 gibt es sogar eine abgekürzte Version ohne {}-Schließungen.
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 offen
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.

