解決.NET Runtime Optimization Service(mscorsvw.exe)造成CPU不斷飆高

解決.NET Runtime Optimization Service(mscorsvw.exe)造成CPU不斷飆高

近期不知道有何原因,公司與家中筆電都會不時出現風扇提高轉速的聲音,本來不太在意,但高轉速有時持續一整天,而且電腦明顯變慢,開啟[工作管理員]查看,非常明顯,有個 .NET Runtime Optimization Service(mscorsvw.exe) 長時間在使用 CPU。

.NET Runtime Optimization Service(mscorsvw.exe)

查詢到一篇微軟文章,說明 .NET Runtime Optimization Service(mscorsvw.exe) 相當清楚,簡單來說, 當我們安裝了 .NET Framework 或是 .NET Framework 被更新,就會觸發這個 .NET 最佳化服務,這個服務可能不會立即執行。一般來說,它會盡可能安靜,某些高優先順序會盡快被執行,其他低優先順序工作,會利用電腦空閒時去處理。通常會造成 CPU 不斷飆高的原因在優先順序工作被卡住了。

解決辦法

開啟 cmd.exe 視窗(系統管理員),移至下列目錄:

  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\

在對應目錄下輸入以下指令:ngen.exe executeQueuedItems,也就是跟系統說,請快點執行卡住的工作。

ngen.exe executeQueuedItems

嗯,我的犯人找到了,最近因為自然輸入法V10升級V11優惠,所以我把公司與家裡的筆電都更新了至自然輸入法V11。

其實一開始心想:慘了,該不會是中毒了吧。後來瞭解後才知道,原來 .NET Framework 在被安裝與更新時,在本機端會進行一個最佳化的工作,而且還是不一次完成,重要的先執行,次重要的慢慢來,也就是這個慢慢來的設計,造成 CPU 有機會不斷飆高的情況。

5 則留言:

  1. 我依照你建議下ngen.exe ....指令,卻一直在執行而無法結束

    回覆刪除
  2. 直接按結束工作可以嗎?

    回覆刪除
  3. 久久不能結束,可以。
    但記得重新執行一次 ngen.exe executeQueuedItems 確定工作有完成。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。