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, tanımlandıktan sonra hızlı bir düzeltme üzerinde çalışmak için bir bellek sızıntısına yoğunlaşacaktır.

support@ironsoftware.com adresine bir bellek sızıntısını şu şekilde bildirin:

1. IronPdf'ın en son sürümüne güncelleyin

Eğer henüz yapmadıysanız, lütfen IronPdf'ın en son sürümüne güncelleyin.

2. IDisposable Nesnelerinizi Elden Çıkardığınızdan Emin Olun

.NET IDisposable arayüzünün hatalı kullanımı, bildirilen bellek sızıntılarının büyük çoğunluğunun nedenidir.

Eğer herhangi bir .NET sınıfının Dispose() metodu varsa - muhtemelen IDisposable'dir ve geliştiricinin kullanmayı bitirdiğinde onu söylemesi gerekecektir.

C#'nin bir "yönetilen" dil olduğu ve belleği yönetmek için geliştirilmiş sorumluluğa ihtiyaç duymadığına dair yaygın bir yanlış anlama vardır. Bu inancın aksine, geliştiricilerin ihmal ettiği birçok yaygın .NET nesnesi vardır.

Her IDisposable sınıf örneğini manuel olarak elden çıkarmamak kodunuzda bir bellek sızıntısına neden olabilir.

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

En yaygın çözüm

En iyi çözüm genellikle IDisposable nesnelerine atıfta bulunurken bir using ifadesi 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ı olmadan bir kısa yol versiyonu bile vardı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'inin neredeyse dolmasına kadar çöpün bellekte kalmasına izin vermenin daha verimli olduğunu belirleyebilir veya tutmak için bir takas dosyası kullanabilir.

.NET çöp toplayıcının kullanılmayan nesnelerini uygulama yaşam döngünüzde güvenli bir noktada imha etmesine manuel olarak talimat vermek mümkündür:

  • Bir PDF oluşturmuyorken
  • Bir IDisposable nesnesi açıktır

Bunu yapmanın bir yolu:

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â Bellek Sızıntınız Varsa - Bildirin

Bu, son derece yüksek bir öncelik olarak değerlendirilecektir. Yeni bilgi taleplerinin bulunmaması için log dosyalarınızı nasıl bulacağınızı ve sorununuzu nasıl rapor edeceğinizi açıklayan bu kılavuzu okuyun.

Bu 3 dakikalık okuma, sorununuzu %100 doğrulukla yeniden üretmemize yardımcı olacak, böylece zamanınızı boşa harcamayacağız.

Mühendislik Talep PDF

Teşekkürler - Kimse bellek sızıntılarını sevmez, biz de sevmiyoruz. HTML işleme, Interop, Grafikler ve Akışlar gibi "düşük seviyeli" veya sistem nesneleri ile çalışırken, bunlar mümkün hale gelir. O halde, haydi onları düzeltelim!

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

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget Indirmeler 18,332,619 | Sürüm: 2026.4 yeni yayınlandı
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizin PDF olduğunu izleyin.