IronPDFのメモリリークを修正する
IronPDFで明確なメモリリークが発生した場合は、お知らせください。 私たちの最も上級なエンジニアは、メモリリークが発見されると、そのホットフィックスに全力で取り組みます。
メモリーリークを報告する方法は次の通りです: support@ironsoftware.com
最新のIronPDFバージョンに更新してください
まだの場合は、最新のIronPDFバージョンに更新してください。
2. iDisposable オブジェクトを破棄したことを確認してください。
報告されたメモリリークの大部分は、.NETの_iDisposable_インターフェースの不適切な使用によって引き起こされます。
任意の.NETクラスがDisposeメソッドというインタフェースを有している場合、そのインタフェースは、確実にリソースを解放する責任を持っています。これにより、メモリのリークやその他のリソースの不具合が防止されます。
以下のようなコード例で、Disposeメソッドを正しく実装してください:
using System;
public class MyClass : IDisposable
{
// その他のメンバやメソッド...
public void Dispose()
{
// 解放すべきリソースの解放処理をここに記述
}
}
using System;
public class MyClass : IDisposable
{
// その他のメンバやメソッド...
public void Dispose()
{
// 解放すべきリソースの解放処理をここに記述
}
}
Imports System
Public Class [MyClass]
Implements IDisposable
' その他のメンバやメソッド...
Public Sub Dispose() Implements IDisposable.Dispose
' 解放すべきリソースの解放処理をここに記述
End Sub
End Class
IronPDF, IronOCR, IronXLなどのIron Software製品を使用する際にも、必要に応じてそのクラスのDisposeメソッドを使用して、リソースの最適な管理を行ってください。()メソッド - おそらく 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_ ステートメントを使用することです。
使用(var stream=myPdfDocument.Stream){// 何かを実行する}もちろん、英語のテキストを教えていただけますでしょうか?
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()
これが完了すると、メモリ使用量のグラフは通常の(しかしゼロではない)レベルに低下するはずです。
4. 依然としてメモリリークがある場合は、報告してください。
これは非常に高い優先順位として尊重されるでしょう
以下のガイドをお読みください。ログファイルの見つけ方と追加情報問い合わせの必要がない方法で報告する方法について説明しています。
この3分間の説明をお読みいただくことで、私たちは100%正確に問題を再現でき、あなたの時間を無駄にしません。
https://ironpdf.com/troubleshooting/engineering-request-pdf/
エンジニアリングリクエスト - IronPDF
問題が原因であると考えられる場合、お客様のプロジェクトのために特別なエンジニアリングサポートが必要になることがあります。このページでは、IronPDFに関するエンジニアリングリクエストを送信するためのガイドラインを提供します。
手順:
-
お問い合わせフォームの記入
- お名前
- メールアドレス
- 製品情報(例: IronPDF for .NET、IronPDF for Java、IronPDF for Python、IronPDF for Node.js)
- 問題の詳細な説明
-
サンプルコードの提供
- 問題を再現できる最小限のコードを提供してください。これには、PDFの生成や操作に関連する部分が含まれます。
-
ログファイルの添付
- 問題発生時のログファイルを添付してください。これにより、技術チームが問題の原因を特定しやすくなります。
- エラーメッセージのキャプチャ
- 発生したエラーメッセージのスクリーンショットを添付してください。
重要事項
- すべての情報が揃っていることで、エンジニアリングチームが迅速に問題を特定し、解決策を提案できる可能性が高まります。
- 特定のエンジニアリングサポートについては、+およびProライセンスユーザーのみが対象です。
お客様のプロジェクトが再びスムーズに進行できるよう、全力でサポートいたします。
ありがとうございます - メモリリークは誰も好きではありませんし、私たちも同様です。 「低レベル」やシステムオブジェクト(HTMLレンダリング、インターロップ、グラフィックス、ストリームなど)を使用する場合、それらは可能になります。 それでは、修正しましょう。!
IronPDFは、ユーザーからのバグ報告や機能リクエストを聞くことによって今日の姿となりました。ご支援ありがとうございます。