.NET Runtime Optimization ServiceがCPUに高負荷をかける場合の対処法
.NET Runtime Optimization Service(mscorsvw.exe)は、.NET Frameworkアセンブリをネイティブコードに事前コンパイルするバックグラウンドプロセスです。この処理はOSや.NET Frameworkの更新後に実行され、CPU使用率が高まるのは正常な動作です。完了までの時間はPCの性能に依存し、待機することが最善ですが、コマンドラインで高速化するか、サービスを一時停止することも可能です。
方法1:最適化プロセスの高速化
既定では、このサービスは他の作業の妨げにならないよう全CPUリソースを使用しません。コンソールから高優先度で強制的にコンパイルを実行することで、待ち時間を大幅に短縮できます。以下、OSバージョンとビット数別の手順です。
- 管理者権限でコマンドプロンプトを起動します。スタートメニューで
cmdを検索し、右クリックして「管理者として実行」を選択します。 - インストール済み.NET Frameworkのバージョンを確認します。エクスプローラのアドレスバーに
%windir%\Microsoft.NET\Framework\を入力してEnterを押し、v4.0.30319フォルダの有無を調べます。存在すれば4.x用のコマンドを、存在せずv2.0.50727がある場合は2.0/3.5用のコマンドを使用します。 - 環境に応じて以下のコマンドを実行します。
Windows 10/11(64ビット) / .NET Framework 4.x:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems schTasks /run /Tn "\Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64"
Windows 10/11(32ビット) / .NET Framework 4.x:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
Windows 7(64ビット) / .NET Framework 4.x:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executeQueuedItems C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
Windows 7(32ビット) / .NET Framework 4.x:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems
.NET Framework 2.0/3.5のみ(64ビットOS):
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executeQueuedItems C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
.NET Framework 2.0/3.5のみ(32ビットOS):
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executeQueuedItems
方法2:サービスの無効化または再起動
高速化後もmscorsvw.exeが長時間高負荷を継続する、または応答停止しているように見える場合は、サービスの再起動か一時停止を試します。恒久的な無効化は、多くのアプリケーションに不可欠な.NET Frameworkのパフォーマンス低下を招くため推奨されません。
- Win+Rキーを押し、
services.mscを入力してEnterを押します。 - 一覧から「Microsoft .NET Framework NGEN」または「Runtime Optimization Service」を探します。
- サービスをクリックして選択し、左側の「停止」リンクで一時停止、または「再起動」を実行します。
別の方法として、サービスをダブルクリックしてプロパティを開き「停止」をクリックします。その後「スタートアップの種類」を「手動」または「無効」に変更すると、再起動後の自動起動を防げます。高負荷が許容できる状況になったら、種類を「自動」に戻し、バックグラウンド最適化の完了を許可してください。