.net 如何杀死mscorsvw.exe

.net 如何杀死mscorsvw.exe,.net,visual-studio,ngen,.net,Visual Studio,Ngen,mscorsvw.exe(预编译程序集的.NET优化)占用了我CPU的很大一部分—50-100% 这篇文章(和其他许多文章)说 ngen.exe executequeueeditems 从命令行应该杀死它。对我来说,这个命令只是挂起。有没有更好的方法来终止这个过程 我没有尝试重新启动。在过去的几天里,我不止一次地看到我的CPU利用率猛增,我怀疑这就是我的问题所在;我想知道如何继续杀死它 这篇文章(和其他许多文章)说 ngen.exe executequeueeditems 从命令行应该杀死它。对

mscorsvw.exe(预编译程序集的.NET优化)占用了我CPU的很大一部分—50-100%

这篇文章(和其他许多文章)说

ngen.exe executequeueeditems

从命令行应该杀死它。对我来说,这个命令只是挂起。有没有更好的方法来终止这个过程

我没有尝试重新启动。在过去的几天里,我不止一次地看到我的CPU利用率猛增,我怀疑这就是我的问题所在;我想知道如何继续杀死它

这篇文章(和其他许多文章)说

ngen.exe executequeueeditems

从命令行应该杀死它。对我来说,这个命令只是挂起。是否有更好的>方法来终止此过程

没有;它不会杀死它。相反,它故意让事情变得更糟。它将一次处理所有排队的项目,而不是一点点地进行后台编译(这样您通常不会注意到)。这将需要一些时间来完成。它不会挂起来,它将非常努力地工作。当它完成时,它就完成了,并且将没有更多的东西留给后台编译

请注意,后台编译作业(很可能)是通过最近的升级(您可能安装了service pack)添加的。Windows通过使用.NET JIT编译器对所有托管程序集进行AOT编译帮了你一个忙。该编译器了解你的确切硬件和处理器类型,因此它将发出最优化的代码。通过这种方式,.NET可以确保软件在将来运行得更快,而代价是现在就编译程序集

在您间接链接到SEF的许多资源中,请阅读此资源,例如:

试试看

ngen queue status
希望is不仅仅显示“我正在运行”,还显示了它试图编译的内容。
ngen queue stop
命令将停止服务


当安装程序部署程序集并要求服务使用
ngen install
预编译程序集时,此服务开始运行。很明显,您的机器上有一个坏的,我猜编译程序集是一次又一次的失败。检查Windows事件日志以获取有关此的面包屑。卸载执行此操作的程序。

.NET在我看来,它的设计有一些问题,因为需要一个“实时”编译器来运行所有程序,以便在时间到来之前对其进行编译


通常有两个
mscorsvw
守护进程正在运行,一个用于64位,另一个用于32位(它们彼此同步)。100%的CPU利用率是编译器所期望的,但是它的优先级很低,一次最多只能占用一个内核。多核CPU的一个优点是,像这样的事情仍然会留下一个核心来驱动用户界面交互。(请注意,搜索索引器是另一个相同类型的守护进程,按照相同的思路设计。)如果您有一个单核CPU,那么您将真正注意到增加的负载。

有时这会导致典型的错误。我的SQL Server案例会像往常一样等待下一次更新。

安装SQL 2012后,我也遇到了同样的问题。运行命令ngen queue status后,我看到正在运行的是CLR优化过程。再次使用此线程,我可以看到有两个服务Microsoft.NET Framework NGEN v4.0.30319_X64和Microsoft.NET Framework NGEN v4.0.30319_X64,指示32位和64位优化代码


我看到这两个版本已经启动,而x86版本才是罪魁祸首。我停止了服务,CPU从100%恢复到0%,内存减少了大约2GB。

看,.NET谋杀了单核media center PC。旧电脑慢了几个小时,基于网络的视频变得不稳定。能源效率就这么多-我必须让我的电脑全天候编译,以便偶尔赶上吗?用户导向的流程不具有优先级。最棒的是它不会自动更新。。。包括.NET!这会导致重新编译所有资源,在补丁程序星期二之前永远不会完成。我还没有找到建议的解决方法(“ngen.exe安装/队列”或“ngen.exe更新”-在相关框架目录中查找ngen)响应。所以我在services.msc中或通过命令行禁用Microsoft.NET Framework NGEN服务('sc config clr\u optimization\u v4.xxxx start=disabled',其中xxxx是版本号;通过sc查询或目录名或services.msc获取版本号);'“停止”仅在几秒钟内重新启动。考虑或尝试完全移除.NET 4。< /P>为什么投票被关闭?此过程是一个.net预编译优化器(会破坏计算机的性能)。就我所知,这个问题对于程序员来说是一个相当重要的话题。真正的问题是,为什么它需要这么多CPU。杀了它也没用。这就像:
为什么我的车的引擎用了这么多汽油?嗯:我只想砍掉我的车的前部,希望它停止使用汽油。
只有这一次,这辆车可能是为了在你砍掉它后自动恢复发动机而制造的:)。为什么这个过程需要这么多CPU,MS需要回答。但是占用大量CPU是一个非常常见的问题。感谢您指出有两个过程。即使您可能从未在服务器上运行过32位进程,32位任务也会为此编译代码以防万一。也许他们应该称之为JIC(以防万一编译),而不是JIT?有趣的是,在我的例子中,“ngen队列状态”返回服务已停止,并且ngen队列停止不是一个选项。但是我没有“ngen队列暂停”收到一条消息“服务已启动并暂停”,然后process explorer停止查看4个线程的启动和停止。这很有趣。