IronPDF'de Bellek Sızıntılarını Düzeltme

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

IronPDF'de belirgin bir bellek sızıntısı yaşıyorsanız, bunu bilmek istiyoruz. En kıdemli mühendislerimiz, bir bellek sızıntısı tespit edildiğinde, hızlı bir şekilde üzerinde çalışarak bir acil düzeltme yapacaklar.

Bu şekilde support@ironsoftware.com adresine bellek sızıntısı raporu gönderilir:

1. En son IronPDF sürümüne güncelleyin

Henüz yapmadıysanız, lütfen en son IronPDF sürümüne güncelleyin.

2. IDisposable Nesnelerinizi İmha Ettiğinizden Emin Olun

Bildirilen bellek sızıntılarının büyük çoğunluğu, .NET IDisposable arayüzünün yanlış kullanımından kaynaklanmaktadır.

Herhangi bir .NET sınıfında Dispose() yöntemi varsa, bu muhtemelen IDisposable'dir ve geliştiricinin kullanımı bittiğinde bunu bildirmesi gerekir.

C# dilinin "yönetilen" bir dil olduğu, bu nedenle belleği yönetme konusunda geliştiricilere hiçbir sorumluluk bırakmadığı yönünde yaygın bir yanlış anlama vardır. Aksine, bu inancın aksine, geliştiricilerin dispose etmediği birçok yaygın .NET nesnesi gerçekten vardır.

Her bir IDisposable sınıf örneğini manuel olarak imha etmemek, kodunuzda bellek sızıntısına neden olabilir.

  • System.IO.Stream - PdfDocument.Stream özelliği tarafından döndürülür.
  • System.Drawing.Image / System.Drawing.Bitmap - PdfDocument.PageToBitmap yöntemi tarafından döndürülür.
  • IronPdf.PdfDocument - kendisi de IDisposable olarak işaretlenmiştir, çünkü 2021 - 2024 sürümlerimizde yönetilmeyen nesneler içerebilir.

En yaygın çözüm

En iyi çözüm, genellikle using nesnelerine atıfta bulunurken IDisposable ifadesini kullanmaktır.

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

C# 8'de, {} kapanışları içermeyen bir kısaltma sürümü bile bulunmaktadır.

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. Çöp Toplama

Visual Studio hata ayıklayıcı bellek profili, hiçbir sorun olmasa bile artış göstermeye devam edebilir. Yüksek RAM'li bir sistem kullanırken, .NET çalışma zamanı, sistem RAM'iniz neredeyse dolana kadar veya bir yoklama dosyası kullanarak çöp verilerin bellekte kalmasına izin vermenin daha verimli olduğuna karar verebilir.

.NET çöp toplayıcısına, uygulamanızın yaşam döngüsündeki güvenli bir noktada kullanılmayan nesneleri atmasını manuel olarak öğretmek mümkündür:

  • PDF'nin render edilmiyor olması
  • Bir IDisposable nesnesi açıktır

Bunu yapmanın bir yolu şudur:

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

Bundan sonra, bellek kullanımı grafiği normal, ancak sıfır olmayan bir seviyeye düşmelidir.

4. Hâlâ Bir Hafıza Sızıntısı Varsa - Bildirin

Bu, son derece yüksek öncelik olarak kabul edilecektir. Lütfen günlük dosyalarınızı nasıl bulacağınızı ve sorununuzu ilave bilgi talep edilmeyecek şekilde nasıl bildireceğinizi açıklayan bu kılavuzu okuyun.

Bu 3 dakikalık okuma, sizin sorununuzu %100 doğrulukla yeniden oluşturmamıza yardımcı olacak ve zamanınızı boşa harcamadığımızdan emin olacağız.

Mühendislik İsteği PDF

Teşekkür ederiz - Hiç kimse, biz de dahil olmak üzere, bellek sızıntılarından hoşlanmaz. "Düşük seviye" ya da sistem nesneleriyle, örneğin HTML işleme, Interop, Grafik ve Akışlar gibi çalışırken mümkün hale gelebilirler. Hadi onları düzeltelim!

IronPDF, kullanıcılarımızın hata raporları ve özellik isteklerini dinleyerek bugün olduğu hale geldi, bu yüzden desteğiniz için teşekkür ederiz.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.