Cómo solucionar las fugas de memoria en IronPDF
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.
- Uso de objetos que implementan IDisposable
- Encontrar, Arreglar y Evitar Pérdidas de Memoria en C# .NET: 8 Bestes Prácticas
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
IDisposabletambié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
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
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
IDisposableestá 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
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.
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.

