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. Actualización 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úrate de haber desechado tus objetos IDisposable

La gran mayoría de las fugas de memoria notificadas se deben al uso inadecuado de la interfaz .NET IDisposable.

Si alguna clase .NET tiene un método Dispose(), probablemente sea IDisposable y será necesario que el desarrollador lo indique cuando haya 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.

Si no se elimina manualmente cada instancia de clase IDisposable se puede producir una pérdida de memoria en el código.

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

La solución más común

La mejor solución a menudo es utilizar una declaración using cuando se hace referencia 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
}
$vbLabelText   $csharpLabel

En C# 8, incluso hay 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
$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
$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 17,803,474 | Versión: 2026.3 recién lanzado
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.