.NET メモリの割り当ておよび有効期間データの収集

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

Visual Studio プロファイリング ツールでは、.NET メモリの割り当ておよびオブジェクトの有効期間データの収集がサポートされます。これにより、アプリケーションにおけるメモリ関連のパフォーマンス上の問題を検出できます。

  • .NET メモリの割り当てに関するデータには、割り当てられた .NET Framework のメモリ オブジェクトのサイズと数が含まれます。

  • オブジェクトの有効期間データには、3 つのガベージ コレクション ジェネレーションでクリアされた .NET Framework のメモリ オブジェクトのサイズと数が含まれます。

    要件

  • Visual Studio Ultimate , Visual Studio Premium, Visual Studio Professional

注意

Windows 8 および Windows Server 2012 の強化されたセキュリティ機能によって、Visual Studio プロファイラーがこれらのプラットフォームでデータを収集する方法に大幅な変更が必要になりました。 Windows ストア アプリにも新しい収集手法が必要です。 「Windows 8 および Windows Server 2012 アプリケーションのプロファイリング」を参照してください。

データの収集には、サンプリング メソッドまたはインストルメンテーション プロファイル方法を使用できます。

  • サンプリング メソッドを使用すると、プロファイラーは、開始またはアタッチされたプロセスによって生成されるすべての .NET メモリの割り当てとオブジェクトを追跡します。

  • インストルメンテーション プロファイル方法を使用すると、プロファイラーは、インストルメントされるモジュールによって生成される .NET メモリの割り当てとオブジェクトのみを追跡します。

重要

サンプリング メソッドを使用して .NET メモリ データ (割り当てかオブジェクトの有効期間、またはその両方) を収集している場合、ユーザーが指定したサンプリング イベントはすべて無視され、適切なメモリの割り当てイベントを使用してデータが収集されます。

.NET メモリの割り当てのプロファイリングを有効にすると、[割り当て] ビューも有効になります。 .NET 有効期間データのプロファイリングを有効にすると、[オブジェクトの有効期間] ビューも有効になります。 詳細については、「割り当てビュー」および「オブジェクトの有効期間ビュー」を参照してください。

プロファイリング ツールのコマンド ライン ツールを使用して .NET メモリ データを収集する方法については、「コマンド ラインからのプロファイル方法の使用」の「.NET メモリ メソッドを使用したメモリの割り当ておよびオブジェクトの有効期間データの収集」を参照してください。

.NET メモリ データを収集するには

  1. パフォーマンス エクスプローラーで、パフォーマンス セッションを右クリックし、[プロパティ] をクリックします。

  2. Performance Session [プロパティ ページ ] ダイアログ ボックスで、[全般] タブをクリックし、[.NET オブジェクトの割り当て情報を収集] チェック ボックスをオンにします。

  3. .NET オブジェクトの有効期間データを収集するには、[.NET オブジェクトの有効期間情報も収集] チェック ボックスをオンにします。

一般的なタスク

パフォーマンス セッションの Performance Session[プロパティ ページ] ダイアログ ボックスで追加のオプションを指定できます。 このダイアログ ボックスを開くには、次の操作を行います。

  • パフォーマンス エクスプローラーで、パフォーマンス セッション名を右クリックし、[プロパティ] をクリックします。

    次の表のタスクは .NET メモリ データを収集するときに Performance Session[プロパティ ページ] ダイアログ ボックスで指定できるオプションについて説明します。

タスク 関連するコンテンツ
[全般] ページで、生成されるプロファイル データ (.vsp) ファイルの名前付けの詳細を指定します。 - Collecting .NET Memory Allocation and Lifetime Data
- 方法: プロファイル データ ファイル名のオプションを設定する
コード ソリューション内に複数の .exe プロジェクトがある場合は、[起動] ページで、開始するアプリケーションを選択します。 - 階層相互作用データの収集
[階層の相互作用] ページで、プロファイリング実行に ADO.NET 呼び出しデータを追加します。 - 階層相互作用データの収集
[Windows イベント] ページで、サンプリング データと共に収集する 1 つ以上の ETW (Event Tracing for Windows) イベントを指定します。 - 方法: ETW (Event Tracing for Windows) データを収集する
[Windows カウンター] ページで、プロファイル データにマークとして追加するオペレーティング システムのパフォーマンス カウンターを 1 つ以上指定します。 - 方法 : Windows カウンター データを収集する
アプリケーション モジュールが複数バージョンの .NET Framework ランタイムを使用する場合、[詳細] ページで、プロファイルする .NET Framework ランタイム バージョンを指定します。 既定では、最初に読み込まれたバージョンがプロファイリングされます。 - 方法: side-by-side 実行でプロファイリングするように .NET Framework ランタイムを指定する

インストルメンテーション タスク

インストルメンテーション メソッドでのプロファイル実行に固有の [プロパティ ページ] ダイアログ ボックスのオプションを、次の表のタスクに示します。

タスク 関連するコンテンツ
[バイナリ] ページで、モジュールのインストルメント化されたコピーの場所を指定します。 既定では、元のバイナリはバックアップ フォルダーに移動されます。 - 方法 : インストルメントされたバイナリを再配置する
[インストルメンテーション] ページで、プロファイリングのオーバーヘッドを軽減するために小規模関数を除外し、ASP.NET Web ページで JavaScript コードをプロファイルし、インストルメンテーション プロセスの前と後にコマンド プロンプトで実行するコマンドを指定します。 - 方法 : インストルメンテーションで短い関数を除外または含める
- 方法: Web ページ内の JavaScript (ECMA) コードをプロファイリングする
- 方法 : インストルメント前のコマンドおよびインストルメント後のコマンドを指定する
[CPU カウンター] ページで、プロファイル データにマークとして追加するプロセッサのパフォーマンス カウンターを 1 つ以上指定します。 - 方法 : CPU カウンター データを収集する
[詳細] ページで、必要な追加の VSInstr.exe オプションを指定します (特定の関数を含めるオプションや除外するオプションなど)。 VSInstr オプションの詳細については、「VSInstr」を参照してください。 - 方法 : 追加のインストルメンテーション オプションを指定する
- 方法 : インストルメンテーションを特定の関数に制限する

参照

パフォーマンス セッションの構成
方法 : 収集方法を選択する
パフォーマンス セッションのプロパティ