Naprawa wycieków pamięci w IronPDF

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

Jeśli doświadczasz pozornego wycieku pamięci w IronPDF, chcemy o tym wiedzieć. Nasi najbardziej doświadczeni inżynierowie natychmiast zajmą się wyciekiem pamięci, by opracować poprawkę, gdy tylko go zidentyfikują.

Oto jak zgłosić wyciek pamięci na support@ironsoftware.com :

1. Zaktualizuj do najnowszej wersji IronPDF

Jeśli jeszcze tego nie zrobiłeś, proszę zaktualizuj do najnowszej wersji IronPDF.

2. Upewnij się, że usunąłeś obiekty IDisposable

Zdecydowana większość zgłoszonych wycieków pamięci jest spowodowana niewłaściwym użyciem interfejsu .NET IDisposable.

Jeśli jakakolwiek klasa .NET posiada metodę Dispose(), to prawdopodobnie jest to IDisposable i będzie wymagała od programisty poinformowania jej o zakończeniu korzystania z niej.

Istnieje powszechne nieporozumienie, że C# jest językiem 'zarządzanym', nie wymagającym odpowiedzialności programisty za zarządzanie pamięcią. Wbrew temu przekonaniu, istnieje wiele typowych obiektów .NET, które programiści zapominają zwolnić.

Brak ręcznego usunięcia każdej instancji klasy IDisposable może spowodować wyciek pamięci w kodzie.

  • System.IO.Stream — zwracany przez właściwość PdfDocument.Stream.
  • System.Drawing.Image / System.Drawing.Bitmap — zwracane przez metodę PdfDocument.PageToBitmap.
  • IronPdf.PdfDocument – sam w sobie jest również oznaczony jako IDisposable, ponieważ może zawierać obiekty niezarządzane w naszych późniejszych wydaniach z lat 2021–2024.

Najczęstsze rozwiązanie

Najlepszym rozwiązaniem jest często użycie instrukcji using w odniesieniu do obiektów IDisposable.

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

W C# 8 dostępna jest nawet wersja skrócona bez zamknięć {}.

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. Zbierz śmieći

Profiler pamięci debugger Visual Studio może nadal pokazywać wzrost, nawet jeśli nic nie jest nie tak. Podczas korzystania z systemu z dużą ilością pamięci RAM, środowisko uruchomieniowe .NET może zdecydować, że bardziej wydajne jest pozostawienie odpadów w pamięci, aż pamięć RAM będzie prawie pełna lub użycie pliku wymiany do przechowywania danych.

Możliwe jest ręczne nakazanie zbieracza śmieći .NET, aby usunął swoje nieużywane obiekty w bezpiecznym miejscu cyklu życia aplikacji, kiedy:

  • Nie renderujesz PDF
  • Obiekt IDisposable jest otwarty

Jednym ze sposobów na to jest:

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

Po tym, wykres użycia pamięci powinien spaść do normalnego, ale niezerowego poziomu.

4. Jeśli nadal masz wyciek pamięci - zgłoś go

Zostanie to uznane za niezwykle wysoką priorytetowość. Proszę przeczytać ten przewodnik, który wyjaśnia, jak znaleźć pliki dziennika i zgłosić problem w taki sposób, aby nie było potrzeby żądania dodatkowych informacji.

Ten 3-minutowy materiał pomoże nam zreprodukować twój problem z dokładnością 100%, zapewniając, że nie zmarnujemy twojego czasu.

Żądanie inżynieryjne PDF

Dziękujemy - Nikt nie lubi wycieków pamięci, w tym my. Pracując z obiektami 'niskopoziomowymi' lub systemówymi, takimi jak renderowanie HTML, Interop, Grafika, i Strumienie, stają się one możliwe. Więc naprawmy je!

IronPDF stał się tym, czym jest dzisiaj, dzięki uwadze na zgłoszenia błędów i życzenia funkcji naszych użytkowników, więc dziękujemy za wsparcie.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,926,724 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.