IronPDF'de Bellek Sızıntılarını Düzeltme
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.
- IDisposable'ı uygulayan nesneleri kullanma
- C# .NET'de Bellek Sızıntılarını Bulun, Düzeltin ve Önleyin: 8 En İyi Uygulama
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.PageToBitmapyöntemi tarafından döndürülür. - IronPdf.PdfDocument - kendisi de
IDisposableolarak 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
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
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
IDisposablenesnesi 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
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.
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.

