Naprawa wycieków pamięci w IronPDF
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 nie zostało to jeszcze wykonane, zaktualizuj do najnowszej wersji IronPdf.
2. Upewnij się, że zostały zamknięte obiekty IDisposable
Zdecydowana większość zgłaszanych wycieków pamięci jest spowodowana niewłaściwym użyciem interfejsu .NET IDisposable .
Jeśli jakakolwiek klasa .NET ma metodę Dispose() - prawdopodobnie jest IDisposable i wymaga, aby programista poinformował, kiedy skończy z niej korzystać.
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ć.
- Korzystanie z obiektów implementujących IDisposable
- Znajdowanie, naprawianie i unikanie wycieków pamięci w C# .NET: 8 najlepszych praktyk
Brak ręcznego zamykania każdej instancji klasy IDisposable może spowodować wyciek pamięci w kodzie.
- System.IO.Stream - który jest zwracany przez właściwość
PdfDocument.Stream. - System.Drawing.Image / System.Drawing.Bitmap - który zwracany jest przez metodę
PdfDocument.PageToBitmap. - IronPdf.PdfDocument - sam jest oznaczony jako
IDisposable, ponieważ może zawierać niezarządzane obiekty w naszych późniejszych wydaniach z lat 2021 - 2024.
Najczęstsze rozwiązanie
Najlepszym rozwiązaniem jest często użycie instrukcji using podczas pracy z obiektami 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
W C# 8 istnieje nawet skrócona wersja 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
3. Zbierz śmieci
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 śmieci .NET, aby usunął swoje nieużywane obiekty w bezpiecznym miejscu cyklu życia aplikacji, kiedy:
- Nie jest renderowany plik PDF
- Obiekt
IDisposablejest 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
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ć dany problem z dokładnością 100%, zapewniając, że nie zmarnujemy twojego czasu.
Dziękujemy - Nikt nie lubi wycieków pamięci, w tym my. Pracując z obiektami 'niskopoziomowymi' lub systemowymi, 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.

