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. 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.
- Uso de objetos que implementan IDisposable
- Encontrar, Arreglar y Evitar Pérdidas de Memoria en C# .NET: 8 Mejores Prácticas
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
IDisposabletambié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
}En C# 8, incluso hay una versión abreviada sin cierres {}.
using var stream = myPdfDocument.Stream;
// Perform operations with the stream hereusing var stream = myPdfDocument.Stream;
// Perform operations with the stream here3. 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 clearedSystem.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 clearedDespué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.






