Visual Studio のパフォーマンスのヒントとテクニックVisual Studio performance tips and tricks

Visual Studio のパフォーマンスの推奨事項は、まれなケースで発生する可能性があるメモリ不足の状況を想定したものです。Visual Studio performance recommendations are intended for low memory situations, which may occur in rare cases. これらの状況では、使っていない可能性がある特定の Visual Studio の機能を最適化できます。In these situations, you can optimize certain Visual Studio features that you may not be using. 以下のヒントは一般的な推奨事項を意図したものではありません。The following tips are not intended as general recommendations.

注意

メモリの問題で製品の使用が困難な場合は、フィードバック ツールを使ってお知らせください。If you’re having difficulty using the product because of memory issues, let us know through the feedback tool.

64 ビット OS を使用するUse a 64-bit OS

システムを Windows の 32 ビット版から 64 ビット版にアップグレードすると、Visual Studio が使用できる仮想メモリの量が 2 GB から 4 GB に増えます。If you upgrade your system from a 32-bit version of Windows to a 64-bit version, you expand the amount of virtual memory available to Visual Studio from 2 GB to 4 GB. これにより、Visual Studio では、32 ビット プロセスですが非常に大きいワークロードを処理できるようになります。This enables Visual Studio to handle significantly larger workloads, even though it is 32-bit process.

詳細については、メモリの制限に関するページと、「Using /LARGEADDRESSAWARE on 64-bit Windows」(64 ビット Windows での /LARGEADDRESSAWARE の使用) を参照してください。For more information, see Memory limits and Use /LARGEADDRESSAWARE on 64-bit Windows.

自動ファイル復元を無効にするDisable automatic file restore

Visual Studio では、前のセッションで開いたままのドキュメントが自動的に再度開かれます。Visual Studio automatically reopens documents that were left open in the previous session. そのため、プロジェクト タイプと開いているドキュメントに応じて、ソリューションの読み込みにかかる時間が最大で 30% 以上長くなる場合があります。This can prolong the times it takes to load a solution by up to 30% or more, depending on the project type and the documents being opened. Windows フォームや XAML などのデザイナー、および一部の JavaScript ファイルや typescript ファイルを開くのに時間がかかる場合があります。Designers like Windows Forms and XAML, and some JavaScript and typescript files, can be slow to open.

Visual Studio では、自動ドキュメント復元により、ソリューションの読み込み速度が大幅に低下する場合、黄色のバーでユーザーに通知します。Visual Studio notifies you in a yellow bar when automatic document restore is causing a solution to load significantly slower. 次の手順に従って、ファイルが自動的に再度開かれないようにすることができます。You can disable automatic file reopening by following these steps:

  1. [ツール] > [オプション] の順に選択して、 [オプション] ダイアログ ボックスを開きます。Select Tools > Options to open the Options dialog box.

  2. [プロジェクトおよびソリューション] > [全般] ページで、 [Reopen documents on solution load](ソリューションの読み込み時にドキュメントを再度開く) の選択を解除します。On the Projects and Solution > General page, deselect Reopen documents on solution load.

自動ファイル復元を無効にした場合、[移動] コマンドのいずれかを使用することで、開くファイルにすばやく移動できます。If you disable automatic file restore, a quick way to navigate to files you want to open is by using one of the Go To commands:

  • 一般的な [移動] 機能の場合は、 [編集] > [移動] > [すべてに移動] の順に選択するか、Ctrl+T キーを押します。For the general Go To functionality, select Edit > Go To > Go To All, or press Ctrl+T.

  • [編集] > [移動] > [最後の編集の場所へ移動] を使用するか、Ctrl+ Shift+Backspace キーを押すことで、ソリューション内の最後の編集の場所に移動することができます。Jump to the last edit location in a solution using Edit > Go To > Go To Last Edit Location, or by pressing Ctrl+Shift+Backspace.

  • ソリューション内の最近アクセスしたファイルの一覧を表示するには、 [最近使ったファイルに移動] を使用します。Use Go To Recent File to see a list of recently visited files in a solution. [編集] > [移動] > [最近使ったファイルに移動] の順に選択するか、Ctrl+1 キー、Ctrl+R キーを押します。Select Edit > Go To > Go To Recent File, or press Ctrl+1, Ctrl+R.

デバッグ オプションを構成するConfigure debugging options

一般にデバッグ セッション中は少ないメモリで実行している場合は、1 つまたは複数の構成を変更することでパフォーマンスを最適化できます。If you are typically running low on memory during debugging sessions, you can optimize performance by making one or more configuration changes.

  • マイ コードのみを有効にするEnable Just My Code

    最も簡単な最適化は、マイ コードのみ 機能を有効にすることです。この機能は、ユーザーのプロジェクトのシンボルのみを読み込みます。The simplest optimization is to enable the Just My Code feature, which only loads symbols for your project. この機能を有効にすると、マネージド アプリケーション (.NET) のデバッグ用に大量のメモリを節約できます。Enabling this feature can result in a significant memory saving for debugging managed applications (.NET). 一部のプロジェクトの種類では、このオプションは既定で既に有効になっています。This option is already enabled by default in some project types.

    マイ コードのみ を有効にするには、 [ツール] > [オプション] > [デバッグ] > [全般] の順に選択し、 [マイ コードのみを有効にする] をオンにします。To enable Just My Code, choose Tools > Options > Debugging > General, and then select Enable Just My Code.

  • 読み込むシンボルを指定するSpecify symbols to load

    ネイティブ デバッグでは、シンボル ファイル ( .pdb) の読み込みには多くのメモリ リソースが必要です。For native debugging, loading symbol files (.pdb) is expensive in terms of memory resources. デバッガーのシンボル設定を構成することで、メモリを節約できます。You can configure your debugger symbol settings to conserve memory. 通常は、ユーザーのプロジェクトからのみモジュールを読み込むようにソリューションを構成します。Typically, you configure the solution to only load modules from your project.

    シンボルの読み込みを指定するには、 [ツール] > [オプション] > [デバッグ] > [シンボル] の順に選びます。To specify symbol loading, choose Tools > Options > Debugging > Symbols.

    オプションを [すべてのモジュール] ではなく [指定したモジュールのみ] に設定した後、読み込むモジュールを指定します。Set the options to Only specified modules instead of All modules and then specify which modules you care to load. デバッグ中に、 [モジュール] ウィンドウで特定のモジュールを右クリックして、シンボルの読み込みにモジュールを明示的に含めることもできますWhile debugging, you can also right-click specific modules in the Modules window to explicitly include a module in the symbol load. (デバッグ中にウィンドウを開くには、 [デバッグ] > [Windows] > [モジュール] の順に選択します)。(To open the window while debugging, choose Debug > Windows > Modules.)

    詳細については、「Understanding symbol files and Visual Studio’s symbol settings」(シンボル ファイルおよび Visual Studio のシンボルの設定について) を参照してください。For more information, see Understand symbol files.

  • 診断ツールを無効にするDisable Diagnostic Tools

    CPU プロファイルを使い終わったら無効にすることをお勧めします。It is recommended that you disable CPU profiling after use. この機能は大量のリソースを使う場合があります。This feature can consume large amounts of resources. CPU プロファイルを有効にすると、後続のデバッグ セッションを通してその状態が維持されるので、終了したら明示的にオフにする必要があります。Once CPU profiling is enabled, this state is persisted across subsequent debug sessions, so it’s worth explicitly turning it off when done. 診断ツールで提供される機能が必要ない場合は、デバッグ中に診断ツールを無効にすることで、リソースを節約できる場合があります。You may save some resources by disabling the diagnostic tools while debugging if you do not need the provided features.

    診断ツール を無効にするには、デバッグ セッションを開始し、 [ツール] > [オプション] > [デバッグ] > [全般] の順に選択した後、 [デバッグ中に診断ツールを有効にする] オプションをオフにします。To disable the Diagnostic Tools, start a debugging session, select Tools > Options > Debugging > General, and then deselect the Enable Diagnostic Tools while debugging option.

    詳しくは、「Visual Studio のプロファイリング機能ツアー」をご覧ください。For more information, see Profiling Tools.

ツールと拡張機能を無効にするDisable tools and extensions

一部のツールや拡張機能を無効にすることで、パフォーマンスを向上させることができます。Some tools or extensions can be turned off to improve performance.

ヒント

多くの場合、一度に 1 つの拡張機能を無効にしてパフォーマンスを再確認することで、パフォーマンスの問題を分離できます。You can often isolate performance issues by turning off extensions one at a time and rechecking performance.

マネージド言語サービス (Roslyn)Managed language service (Roslyn)

.NET Compiler Platform ("Roslyn") のパフォーマンスに関する考慮事項については、「Performance considerations for large solutions」 (大きいソリューションでのパフォーマンスの考慮事項) をご覧ください。For information about .NET Compiler Platform ("Roslyn") performance considerations, see Performance considerations for large solutions.

  • 完全なソリューション分析を無効にするDisable full solution analysis

    Visual Studio は、ビルドを呼び出す前にエラーに関する豊富なエクスペリエンスを提供するため、ソリューション全体に対して分析を実行します。Visual Studio performs analysis on your entire solution in order to provide a rich experience about errors before invoking a build. この機能は、可能な限り早くエラーを特定するのに役立ちます。This feature is useful to identify errors as soon as possible. ただし、大規模なソリューションでは、この機能は大量のメモリ リソースを消費する場合があります。However, for large solutions, this feature can consume significant memory resources. メモリの不足状況や同様の問題が発生している場合は、このエクスペリエンスを無効にしてこれらのリソースを解放できます。If you’re experiencing memory pressure or similar issues, you can disable this experience to free up these resources. このオプションは、既定では、Visual Basic に対しては有効になり、C# に対しては無効になります。By default, this option is enabled for Visual Basic and disabled for C#.

    完全なソリューション分析 を無効にするには、 [ツール] > [オプション] > [テキスト エディター] の順に選択します。次に、 [Visual Basic] または [C#] を選択します。To disable Full Solution Analysis, choose Tools > Options > Text Editor, then select either Visual Basic or C#. [詳細] を選び、 [完全ソリューション解析を有効にする] の選択を解除します。Choose Advanced and deselect Enable full solution analysis.

  • CodeLens を無効にするDisable CodeLens

    Visual Studio は、表示される各メソッドに対して すべての参照を検索 タスクを実行します。Visual Studio performs a Find All References task on each method as it is displayed. CodeLens は、参照数のインライン表示などの機能を提供します。CodeLens provides features such as the inline display of the number of references. 処理は、ServiceHub.RoslynCodeAnalysisService32 などの別のプロセスで実行されます。The work is performed in a separate process such as ServiceHub.RoslynCodeAnalysisService32. 大規模なソリューション、またはリソースに制約があるシステムでは、この機能はパフォーマンスに大きく影響する可能性があります。In large solutions, or on resource-constrained systems, this feature can have a significant impact on performance. メモリの問題が発生する場合 (たとえば、4 GB のコンピューターで大規模なソリューションを読み込むとき)、またはこのプロセスの CPU 使用率が高い場合は、CodeLens を無効にしてリソースを解放できます。If you’re experiencing memory issues, for example, when loading a large solution on a 4-GB machine, or high CPU usage for this process, you can disable CodeLens to free up resources.

    CodeLens を無効にするには、 [ツール] > [オプション] > [テキスト エディター] > [すべての言語] > [CodeLens] の順に選択し、この機能をオフにします。To disable CodeLens, choose Tools > Options > Text Editor > All Languages > CodeLens, and deselect the feature.

    注意

    CodeLens は、Visual Studio の Professional および Enterprise エディションで使用できます。CodeLens is available in the Professional and Enterprise editions of Visual Studio.

他のツールと拡張機能Other tools and extensions

  • 拡張機能を無効にするDisable Extensions

    拡張機能は Visual Studio に追加された追加ソフトウェア コンポーネントであり、新しい機能を提供したり、既存の機能を拡張したりします。Extensions are additional software components added to Visual Studio that provide new functionality or extend existing functionality. 拡張機能がメモリ リソースの問題の原因になることがよくあります。Extensions can often be a source of memory resource issues. メモリ リソースの問題が発生する場合は、一度に 1 つの拡張機能を無効にして、シナリオまたはワークフローに与える影響を確認します。If you’re experiencing memory resource problems, try disabling extensions one at a time to see how it impacts the scenario or workflow.

    拡張機能を無効にするには、 [ツール] > [拡張機能と更新プログラム] を選択し、特定の拡張機能を無効にします。To disable extensions, go to Tools > Extensions and Updates, and disable a particular extension.

    拡張機能を無効にするには、 [拡張機能] > [拡張機能の管理] を選択し、特定の拡張機能を無効にします。To disable extensions, go to Extensions > Manage Extensions, and disable a particular extension.

  • マップ モードの無効化Disable map mode

    "マップ モード" では、コード行がスクロール バーに縮小表示されます。Map mode displays lines of code, in miniature, on the scroll bar. マップ モードは既定で有効になっています。Map mode is enabled by default.

    マップ モードを無効にするには、 [ツール][オプション][テキスト エディター][すべての言語][スクロール バー] の順に進み、 [ビヘイビアー] セクションで [垂直スクロール バーでのマップ モードの使用] オプションの選択を解除します。To disable map mode, go to Tools > Options > Text Editor > All Languages > Scroll Bars, and in the Behavior section, deselect the Use map mode for vertical scroll bar option.

  • 右端での折り返しの無効化Disable word wrap

    "右端で折り返す" では、長いコード行のうち、コード エディター ウィンドウの現在の幅からはみ出す部分が表示されます。Word wrap displays the portion of a long line of code that extends beyond the current width of the code editor window. [右端で折り返す] は既定でオンです。Word wrap is on by default.

    現在作業中のプロジェクトの右端で折り返しを無効にするには、 [編集][詳細][右端で折り返す] の順に進みます。To disable word wrap for a project that you are currently working on, go to Edit > Advanced > Word Wrap. (同じメニュー コマンドを使用し、この設定を切り替えることができます。)(You can toggle this setting by using the same menu commands.)

    すべてのプロジェクトの右端折り返しを無効にするには、 [ツール][オプション][全般][テキスト エディター][すべての言語][全般] の順に進み、 [設定] セクションで [右端で折り返す] オプションの選択を解除します。To disable word wrap for all projects, go to Tools > Options > General > Text Editor > All Languages > General, and in the Settings section, deselect the Word wrap option.

  • XAML デザイナーを無効にするDisable XAML Designer

    XAML デザイナーは既定で有効にされますが、 .xaml ファイルを開いた場合にのみリソースを消費します。The XAML designer is enabled by default, but only consumes resources if you open a .xaml file. XAML ファイルを使う場合でも、デザイナー機能が必要ないときは、この機能を無効にして、若干のメモリを解放できます。If you work with XAML files but do not wish to use the designer functionality, disable this feature to free up some memory.

    XAML デザイナーを無効にするには、 [ツール][オプション][XAML デザイナー][XAML デザイナーを有効にする] の順に選択し、オプションをオフにします。To disable XAML Designer, go to Tools > Options > XAML Designer > Enable XAML Designer, and deselect the option.

  • ワークロードを削除するRemove workloads

    Visual Studio インストーラーを使って、使われなくなったワークロードを削除できます。You can use the Visual Studio Installer to remove workloads that are no longer used. このようにすると、不要になったパッケージとアセンブリをスキップして、起動時および実行時のコストを合理化できます。This action can streamline the startup and runtime cost by skipping packages and assemblies that aren’t needed anymore.

ガベージ コレクションを強制するForce a garbage collection

CLR では、ガベージ コレクションのメモリ管理システムが使われます。The CLR uses a garbage collection memory management system. このシステムでは、不要になったオブジェクトによってメモリが使われることがあります。In this system, sometimes memory is used by objects that are no longer needed. この状態は一時的なものです。ガベージ コレクターは、そのパフォーマンスとリソース使用のヒューリスティックに基づいて、このメモリを解放します。This state is temporary; the garbage collector will release this memory based on its performance and resource usage heuristics. Visual Studio のホット キーを使って、CLR に未使用のメモリを強制的に回収させることができます。You can force the CLR to collect any unused memory by using a hotkey in Visual Studio. 膨大な量のガベージが収集を待っている場合に、ガベージ コレクションを強制すると、devenv.exe プロセスのメモリ使用量の低下を タスク マネージャー で確認できます。If there is a significant amount of garbage waiting for collection and you force a garbage collection, you should see the memory usage of the devenv.exe process drop in Task Manager. この方法を使う必要はほとんどありません。It’s rarely necessary to use this method. ただし、コストのかかる操作 (フル ビルド、デバッグ セッション、ソリューション オープン イベントなど) が完了した後は、プロセスによって実際に使われていたメモリの量を確認するのに役立ちます。However, after an expensive operation has completed (such as a full build, debug session, or a solution open event), it can help you determine how much memory is really being used by the process. Visual Studio にはマネージドとネイティブが混在しているので、ネイティブ アロケーターとガベージ コレクターの間での限られたメモリ リソースの競合が発生する可能性があります。Because Visual Studio is mixed (managed & native), it’s occasionally possible for the native allocator and the garbage collector to compete for limited memory resources. 大量のメモリが使われている状況では、ガベージ コレクターを強制的に実行すると役に立つことがあります。Under conditions of high memory usage, it may help to force the garbage collector to run.

ガベージ コレクションを強制的に行うには、ホットキー Ctrl+Alt+Shift+F12Ctrl+Alt+Shift+F12 (2 回押します) を使います。To force a garbage collection, use the hotkey: Ctrl+Alt+Shift+F12, Ctrl+Alt+Shift+F12 (press it twice).

ベージ コレクションを強制するとシナリオが確実に動くようになる場合、この動作はバグである可能性があるので、Visual Studio のフィードバック ツールを使ってレポートを提出してください。If forcing garbage collection reliably makes your scenario work, file a report through the Visual Studio feedback tool as this behavior is likely to be a bug.

CLR ガベージ コレクターについては、「ガベージ コレクションの基礎」をご覧ください。For a detailed description of the CLR garbage collector, see Fundamentals of garbage collection.

関連項目See also