C# Extend アプリのメモリ不足 (OOM) エラーのトラブルシューティング
注釈:本資料はAI技術を用いて翻訳されています。
.NET C# Extendアプリはガベージコレクターを使用してシステムメモリを自動的に管理します。ただし、以下の理由によりメモリの問題が発生する可能性があります:
- 大きなオブジェクトへの参照を必要以上に長く保持している
- マネージドメモリリーク
- アンマネージドメモリリーク
- 全般的に高いメモリ使用量
この記事では、.NET C# Extendアプリのローカル開発において、効率的なメモリ管理を行い、メモリ不足(OOM)の問題を軽減するためのベストプラクティスと推奨ツールを紹介します。
ベストプラクティス
-
適切なデータ型を使用してください。メモリ使用量を削減するために、可能な限り
Span<T>を使用してください。 -
文字列は不変であるため、文字列の連結は避けてください。代わりに
StringBuilderを使用してください。 -
他のソースから取得するデータ量を制限してください。
-
アンマネージドコードの使用は避けてください。.NET C# Extend アプリのガベージコレクターはネイティブリソースをクリーンアップしません。アンマネージドコードの不適切な実装は、高いメモリ使用量につながる可能性があります。
推奨ツール
CPU とメモリの使用量を管理するために、以下のツールの使用を推奨します:
Visual Studio
Visual Studio は、.NET アプリケーションのメモリ問題を分析および診断するための優れたツールを提供しています。

- Visual Studio を使用して .NET C# アプリケーションをデバッグします。
- 右側のサイドバーで Diagnostic Tools を選択してピン留めします。プロセスの合計メモリがリアルタイムで表示されます。
- Memory Usage に移動してスナップショットを取得し、アプリのメモリ使用量を分析します。
- CPU Usage に移動して CPU プロファイリング情報を表示します。
- 「Enable CPU profiling to see a breakdown of CPU usage by function.」をクリックします。
- ブレークポイントを設定するか、break all を使用して CPU プロファイルを確認します。
詳細については、Visual Studio の公式ドキュメントを参照してください。
または、Jetbrains Dotmemory を使用して .NET アプリケーションの CPU とメモリのプロファイリングを行うこともできます。詳細については、Jetbrains の公式ドキュメントを参照してください。
Dotnet CLI
Dotnet ツールを使用すると、Linux でのメモリリークのデバッグや高い CPU 使用率のトレースが可能です。