IronPDFのメモリリークを修正する

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDFで明確なメモリリークが発生した場合は、お知らせください。 私たちの最も上級なエンジニアは、メモリリークが発見されると、そのホットフィックスに全力で取り組みます。

メモリーリークを報告する方法は次の通りです: support@ironsoftware.com

最新のIronPDFバージョンに更新してください

まだの場合は、最新のIronPDFバージョンに更新してください。

2. iDisposable オブジェクトを破棄したことを確認してください。

報告されたメモリリークの大部分は、.NETの_iDisposable_インターフェースの不適切な使用によって引き起こされます。

もし .NET クラスが Dispose() メソッドを持っている場合、それはおそらく iDisposable です _そして開発者がそれを使い終わったことを知らせる必要があります。

C#は「管理された」言語であり、メモリを管理する責任が開発者にないという一般的な誤解があります。 この信念とは反対に、多くの一般的な .NET オブジェクトを正しく破棄しない開発者がいることが実際には多いです。

最も一般的な解決策

最適な解決策は、iDisposable オブジェクトを参照するときに using ステートメント を使用することが多いです。

using(var stream=myPdfDocument.Stream){// do stuff}

C# 8には、{} クロージャーなしの省略表記バージョンさえあります

using var stream=myPdfDocument.Stream;

3. ガベージコレクションを行う

Visual Studio デバッガのメモリプロファイラは問題がなくても上昇し続けることがあります。 高RAMシステムを使用している場合、.NETランタイムは、システムRAMがほぼ満杯になるまで、またはスワップファイルを使用してメモリにゴミをそのまま保持しておくほうが効率的であると判断することがあります。

アプリケーションライフサイクルの安全なポイントで、手動で .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()
$vbLabelText   $csharpLabel

これが完了すると、メモリ使用量のグラフは通常の(しかしゼロではない)レベルに低下するはずです。

4. 依然としてメモリリークがある場合は、報告してください。

これは非常に高い優先順位として尊重されるでしょう

以下のガイドをお読みください。ログファイルの見つけ方と追加情報問い合わせの必要がない方法で報告する方法について説明しています。

この3分間の説明をお読みいただくことで、私たちは100%正確に問題を再現でき、あなたの時間を無駄にしません。

https://ironpdf.com/troubleshooting/engineering-request-pdf/

ありがとうございます - メモリリークが好きな人はいません、私たちもそうです。 「低レベル」やシステムオブジェクト(HTMLレンダリング、インターロップ、グラフィックス、ストリームなど)を使用する場合、それらは可能になります。 それでは修正しましょう!

IronPDFは、ユーザーからのバグ報告や機能リクエストを聞くことによって今日の姿となりました。ご支援ありがとうございます。