IronPDF中的内存泄漏
如果您在IronPDF中遇到明显的内存泄漏问题,我们希望得到通知。 我们的高级工程师一旦发现内存泄漏问题,就会迅速集中精力进行热修复。
这是如何向support@ironsoftware.com报告内存泄漏的方法:
1. 更新到最新的 IronPdf 版本
如果您还没有,请更新到最新的IronPdf版本。
确保您已经处理了您的 iDisposable 对象
大多数报告的内存泄漏是由于不当使用 .NET iDisposable 接口造成的。
method, it is important that the Dispose
method is explicitly called on your objects to free resources. This will prevent memory leaks and ensure your application runs smoothly. For instance, in IronPDF, after generating a PDF, you should ensure to call the Dispose
method to clean up the resources._()方法 - 它可能是 iDisposable __并且需要开发者在使用完毕时告诉它。
C#是一种“托管”语言,不需要开发人员负责管理内存,这是一个普遍的误解。 与这种信念相反,实际上有许多常见的.NET对象被开发者无意中忽略了释放。
- 使用实现 IDisposable 的对象
在 C# .NET 中查找、修复和避免内存泄漏:8 种最佳实践
未能手动释放每一个 iDisposable 类实例可能会在您的代码中造成内存泄漏。
- System.IO.Stream - 由 PdfDocument.Stream 属性返回的结果
- System.Drawing.Image / System.Drawing.Bitmap - 由 PdfDocument.PageToBitmap 方法返回
- IronPdf.PdfDocument - 它本身也标记为 iDisposable,因为在我们2021至2024年的后续版本中,它可能包含非托管对象。
最常见的解决方案
最佳解决方案通常是在提及_iDisposable对象时使用 using_ 语句。
using
(var stream=myPdfDocument.Stream){// do stuff}`
在 C# 8 中,甚至有一个没有的速记版本{}闭包
使用 var stream = myPdfDocument.Stream;
3.收集垃圾
即使没有任何问题,Visual Studio调试器内存分析器的使用量也可能会持续上升。 当使用高内存系统时,.NET 运行时可能会认为让垃圾在内存中驻留,直到系统内存几乎满为止,甚至使用交换文件来保持更为高效。
可以在应用程序生命周期的安全点手动指示 .NET 垃圾收集器处理其未使用的对象:
- 无法渲染PDF
- 有一个iDisposable对象开启了
一种方法是
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
System.GC.Collect();
System.GC.Collect()
System.GC.WaitForPendingFinalizers()
System.GC.Collect()
在此之后,内存使用曲线图应该会下降到正常水平,但不会为零。
4. 如果您仍然发现内存泄漏 - 请报告。
这将被视为极高优先级
请阅读本指南,其中指导如何找到您的日志文件并进行报告,以便无需请求额外信息。
这篇3分钟的阅读将帮助我们100%准确地复现您的问题,以免浪费您的时间。
https://ironpdf.com/troubleshooting/engineering-request-pdf/
谢谢 - 没有人喜欢内存泄漏,我们也不例外。 在处理“低级别”或系统对象(如HTML渲染、互操作、图形和流)时,这些操作变得可行。 那么,让我们来修复它们吧。!
IronPDF之所以有今天的成就,全靠倾听用户的错误报告和功能请求,因此感谢您的支持。