Cómo solucionar las fugas de memoria en IronPDF

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

Si está experimentando una aparente pérdida de memoria en IronPDF, queremos saberlo. Nuestros ingenieros más experimentados se enfocarán en una pérdida de memoria para trabajar en una solución rápida una vez identificada.

Así es como se reporta una pérdida de memoria a support@ironsoftware.com:

1. Actualice a la última versión de IronPDF

Si aún no lo ha hecho, por favor, actualice a la última versión de IronPDF.

2. Asegúrese de haber eliminado sus objetos IDisposable

La gran mayoría de las fugas de memoria reportadas son causadas por el uso inadecuado de la interfaz .NET IDisposable.

Si alguna clase de .NET tiene un método Dispose() - probablemente sea IDisposable y requerirá que el desarrollador indique cuando han terminado de usarlo.

Existe una idea errónea común de que C# es un lenguaje "gestionado", que no requiere responsabilidad por parte del desarrollador para gestionar la memoria. Contrario a esta creencia, de hecho hay muchos objetos comunes de .NET que los desarrolladores no eliminan correctamente.

No eliminar manualmente cada instancia de clase IDisposable puede causar una fuga de memoria en su código.

  • System.IO.Stream - que es devuelto por la propiedad PdfDocument.Stream.
  • System.Drawing.Image / System.Drawing.Bitmap - que es devuelto por el método PdfDocument.PageToBitmap.
  • IronPdf.PdfDocument - en sí mismo está marcado como IDisposable también, ya que puede contener objetos no gestionados en nuestras versiones posteriores de 2021 - 2024.

La solución más común

La mejor solución a menudo es usar una declaración using al referirse a objetos 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

En C# 8, hay incluso una versión abreviada sin cierres {}.

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. Recoger basura

El perfilador de memoria del depurador de Visual Studio puede seguir mostrando un aumento incluso si no hay nada mal. Al usar un sistema de RAM alta, el tiempo de ejecución de .NET puede decidir que es más eficiente permitir que la basura se mantenga en la memoria hasta que la RAM de su sistema esté casi llena o incluso usar un archivo de intercambio para mantener.

Es posible instruir manualmente al recolector de basura de .NET para que deseche sus objetos no utilizados en un punto seguro en el ciclo de vida de su aplicación cuando:

  • No se renderiza un PDF.
  • Un objeto IDisposable está abierto

Una forma de hacerlo es:

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

Después de esto, el gráfico de uso de memoria debería disminuir a un nivel normal, pero no cero.

4. Si aún tiene una fuga de memoria - Repórtelo

Esto se considerará una prioridad extremadamente alta. Por favor, lea esta guía, que explica cómo encontrar sus archivos de registro y reportar su problema de tal manera que no se solicitará información adicional.

Esta lectura de 3 minutos nos ayudará a reproducir su problema con un 100% de precisión, asegurando que no pierda su tiempo.

Solicitud de Ingeniería PDF

Gracias - A nadie le gustan las pérdidas de memoria, incluyendo a nosotros. Cuando se trabaja con objetos "de bajo nivel" o del sistema como la representación de HTML, Interop, Gráficos y Streams, se vuelven posibles. ¡Vamos a solucionarlos!

IronPDF solo se ha convertido en lo que es hoy al escuchar los informes de errores y solicitudes de características de nuestros usuarios, así que gracias por su apoyo.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 19,014,616 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.