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@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.
- Verwenden von Objekten, die IDisposable implementieren
- Finden, Beheben und Vermeiden von Speicherlecks in C# .NET: 8 Best Practices
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.StreamEigenschaft zurückgegeben wird. - System.Drawing.Image / System.Drawing.Bitmap - das von der Methode
PdfDocument.PageToBitmapzurückgegeben wird. - IronPdf.PdfDocument - selbst ist ebenfalls mit
IDisposablegekennzeichnet, 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
}
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.

