IronPDFのメモリリークを修正する Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# IronPDFのメモリリークを修正する
IronPDFで明らかなメモリリークが発生している場合は、私たちに知らせてください。 最も経験豊富なエンジニアが、特定され次第、メモリリークに対応するためホットフィックスに取り組みます。
このようにしてメモリリークを[support@ironsoftware.com](mailto:support@ironsoftware.com)に報告します。
## 1. 最新のIronPDFバージョンにアップデートする
すでにしていない場合は、最新のIronPDFバージョンに更新してください。
## 2. `IDisposable` オブジェクトを破棄したことを確認してください
報告されたメモリリークの大多数は、.NET `IDisposable` インターフェースの不適切な使用が原因です。
**もしも.NETクラスが `Dispose()` メソッドを持っている場合、それはおそらく `IDisposable` であり、使用が終了したタイミングを開発者が指示する必要があります。**
C#は"管理された"言語であり、メモリ管理に開発者の責任は必要ないという誤解があります。 この信念に反して、多くの一般的な.NETオブジェクトが破棄されずに放置されています。
- [IDisposableを実装しているオブジェクトを使用する](https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/using-objects)
- [C# .NETのメモリリークを見つけ、修正し、回避する:8つのベストプラクティス](https://michaelscodingspot.com/find-fix-and-avoid-memory-leaks-in-c-net-8-best-practices/)
各 `IDisposable` クラスインスタンスを手動で破棄しないと、コードにメモリリークを引き起こす可能性があります。
- **System.IO.Stream** - これは `PdfDocument.Stream` プロパティから返されます。
- **System.Drawing.Image** / **System.Drawing.Bitmap** - これらは `PdfDocument.PageToBitmap` メソッドから返されます。
- **IronPdf.PdfDocument** - これは `IDisposable` としてもマークされており、後の2021年 - 2024年のリリースではアンマネージオブジェクトを含む可能性があります。
### **最も一般的な解決策**
#### 最良の解決策は、しばしば `using` ステートメントを使用して `IDisposable` オブジェクトを参照することです
```csharp
using(var stream = myPdfDocument.Stream) {
// Perform operations with the stream here
}
```
C# 8では、`{}` クローズを伴わない**省略版**もあります。
```csharp
using var stream = myPdfDocument.Stream;
// Perform operations with the stream here
```
## 3. ガベージコレクションを実行する
Visual Studioデバッガーのメモリプロファイラーは、問題がない場合でも増加を示し続ける可能性があります。 高RAMシステムを使用する際、.NETランタイムは、システムRAMがほぼ満杯になるまで、またはスワップファイルを使用して、メモリにガベージを維持する方が効率的と判断する場合があります。
アプリケーションライフサイクルの安全なポイントで.NETガベージコレクタに未使用のオブジェクトを破棄するよう手動で指示することができます。以下の時に:
- PDFをレンダリングしていない
- `IDisposable` オブジェクトは開いています
### これを行う方法の一つは:
```csharp
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
```
この後、メモリ使用量グラフは正常なレベル(ゼロではないが)に戻るはずです。
### 4. まだメモリーリークがある場合 - 報告してください
これは非常に高い優先度として扱われます。 ログファイルの見つけ方と追加情報を求められることなく問題を報告する方法を説明するこのガイドをお読みください。
これを3分間読むことで、問題を100%正確に再現するのに役立ち、時間を無駄にすることはありません。
[Engineering Request PDF](https://ironpdf.com/troubleshooting/engineering-request-pdf/)
**ありがとうございます** - 誰もメモリリークが好きではなく、私たちも同様です。 HTMLレンダリング、Interop、Graphics、Streamsのような"低レベル"またはシステムオブジェクトを扱う場合、これらは発生する可能性があります。 だから、それらを修正しましょう!
IronPDFは、ユーザーからのバグレポートや機能リクエストを聞いてきたことで、現在の形になりましたので、ご支援に感謝します。
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
IronPDFで明らかなメモリリークが発生している場合は、私たちに知らせてください。 最も経験豊富なエンジニアが、特定され次第、メモリリークに対応するためホットフィックスに取り組みます。
このようにしてメモリリークをsupport@ironsoftware.com に報告します。
1. 最新のIronPDFバージョンにアップデートする
すでにしていない場合は、最新のIronPDFバージョンに更新してください。
2. IDisposable オブジェクトを破棄したことを確認してください
報告されたメモリリークの大多数は、.NET IDisposable インターフェースの不適切な使用が原因です。
もしも.NETクラスが Dispose() メソッドを持っている場合、それはおそらく IDisposable であり、使用が終了したタイミングを開発者が指示する必要があります。
C#は"管理された"言語であり、メモリ管理に開発者の責任は必要ないという誤解があります。 この信念に反して、多くの一般的な.NETオブジェクトが破棄されずに放置されています。
各 IDisposable クラスインスタンスを手動で破棄しないと、コードにメモリリークを引き起こす可能性があります。
System.IO.Stream - これは PdfDocument.Stream プロパティから返されます。
System.Drawing.Image / System.Drawing.Bitmap - これらは PdfDocument.PageToBitmap メソッドから返されます。
IronPdf.PdfDocument - これは IDisposable としてもマークされており、後の2021年 - 2024年のリリースではアンマネージオブジェクトを含む可能性があります。
最も一般的な解決策
最良の解決策は、しばしば using ステートメントを使用して 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 Using stream = myPdfDocument.Stream
' Perform operations with the stream here
End Using
C# 8では、{} クローズを伴わない省略版 もあります。
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 Dim stream = myPdfDocument.Stream
' Perform operations with the stream here
3. ガベージコレクションを実行する
Visual Studioデバッガーのメモリプロファイラーは、問題がない場合でも増加を示し続ける可能性があります。 高RAMシステムを使用する際、.NETランタイムは、システムRAMがほぼ満杯になるまで、またはスワップファイルを使用して、メモリにガベージを維持する方が効率的と判断する場合があります。
アプリケーションライフサイクルの安全なポイントで.NETガベージコレクタに未使用のオブジェクトを破棄するよう手動で指示することができます。以下の時に:
PDFをレンダリングしていない
IDisposable オブジェクトは開いています
これを行う方法の一つは:
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 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
この後、メモリ使用量グラフは正常なレベル(ゼロではないが)に戻るはずです。
4. まだメモリーリークがある場合 - 報告してください
これは非常に高い優先度として扱われます。 ログファイルの見つけ方と追加情報を求められることなく問題を報告する方法を説明するこのガイドをお読みください。
これを3分間読むことで、問題を100%正確に再現するのに役立ち、時間を無駄にすることはありません。
Engineering Request PDF
ありがとうございます - 誰もメモリリークが好きではなく、私たちも同様です。 HTMLレンダリング、Interop、Graphics、Streamsのような"低レベル"またはシステムオブジェクトを扱う場合、これらは発生する可能性があります。 だから、それらを修正しましょう!
IronPDFは、ユーザーからのバグレポートや機能リクエストを聞いてきたことで、現在の形になりましたので、ご支援に感謝します。
テクニカルライター
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
...
詳しく読む