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úrese de haber desechado sus objetos IDisposable

La gran mayoría de las pérdidas de memoria reportadas son causadas por el uso incorrecto de la interfaz IDisposable de .NET.

Si alguna clase .NET tiene un método Dispose() - probablemente sea IDisposable y requerirá que el desarrollador le indique cuándo ha terminado de usarla.

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 pérdida 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 nuestros lanzamientos posteriores de 2021-2024.

La solución más común

La mejor solución suele ser utilizar una sentencia 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,012,929 | Versión: 2025.12 recién lanzado