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.」(関数ごとの CPU 使用率の内訳を表示するには CPU プロファイリングを有効にします)をクリックします。
- ブレークポイントを設定するか、break all を使用して CPU プロファイルを確認します。
詳細については、Visual Studio の公式ドキュメントを参照してください。
また、Jetbrains Dotmemory を使用して .NET アプリケーションの CPU とメモリのプロファイリングを行うこともできます。詳細については、Jetbrains の公式ドキュメントを参照してください。
Dotnet CLI
Dotnet ツールを使用すると、Linux 上でのメモリリークのデバッグや高い CPU 使用率のトレースを行うことができます。