C# ngen.exe内存使用率和系统锁定

C# ngen.exe内存使用率和系统锁定,c#,.net,C#,.net,如果我的电脑闲置超过20分钟,它就会锁定。每当我在c#visual studio 2010中编译和运行程序时,这种情况也会发生。起初我根本不知道问题出在哪里,但经过一点调试后,我发现它是ngen.exe,使用了我电脑8GB内存的100%。使用资源监视器,我只是设法暂停了进程,并计算出“ngen.exe”是什么 原来是.net本机映像生成器。有一次我试着让我的电脑开着大约5个小时,但它没有变亮。我猜某处有内存泄漏。有什么想法吗 请注意,我运行的是windows 8.1、3.5GHz amd fx

如果我的电脑闲置超过20分钟,它就会锁定。每当我在c#visual studio 2010中编译和运行程序时,这种情况也会发生。起初我根本不知道问题出在哪里,但经过一点调试后,我发现它是ngen.exe,使用了我电脑8GB内存的100%。使用资源监视器,我只是设法暂停了进程,并计算出“ngen.exe”是什么

原来是.net本机映像生成器。有一次我试着让我的电脑开着大约5个小时,但它没有变亮。我猜某处有内存泄漏。有什么想法吗


请注意,我运行的是windows 8.1、3.5GHz amd fx 8320 cpu和8gb ram。

我曾为这个问题挣扎过一段时间。每当我打开VisualStudio,“Microsoft公共语言运行时本机编译器”进程将开始消耗大约4GB的RAM和15%的CPU

我尝试过终止任务、删除注册表项、禁用任务计划程序中的任务,但没有任何效果。当我打开VisualStudio时,该进程仍将运行

最后,我通过重命名位于Windows文件夹中的ngen.exe找到了解决方案,即使是本地管理员也无法轻松重命名该文件夹

注意:这应该是您最后的选择

要重命名ngen.exe,请在ngen.exe所在目录中以管理员身份运行PowerShell或命令提示符,然后执行以下命令:

takeown /f ngen.exe 

icacls ngen.exe /grant Username:F

这些命令将把所有权分配给指定的用户名,然后您可以重命名
ngen.exe

我认为很明显,当它一直在空闲状态下发生并且从未停止时,ngen会被困在做它不应该做的事情。 (我还发现其他帖子说让它完成,或者通过跑步来帮助它完成……是ngentask还是其他什么?……但这些都不起作用。) 我怀疑这与Windows未能安装的更新有关,但没关系

我第二次找到这个帖子,但我真正想要的是在 我记得Steven上次为我提供的解决方案/解决方案:

。。。浏览了任务计划程序库>Microsoft>Windows>.NET Framework和lo!有问题的任务在32位和64位版本中显示,在空闲时触发。右键单击以禁用

可怕的含义是,每当.NET Framework迁移到新版本时,都需要再次执行此操作


尝试生成转储(可以通过在任务管理器中右键单击来完成),并在Visual Studio或windbg中对其进行分析。您的计算机是否可能正在将Windows更新下载到.NET framework?我相信在安装过程中,它会对更新的.NET库执行NGen操作,将它们编译到机器级别。杀死NGen并使其不可用很难解决任何问题,这完全是错误的做法。相反,OP应该先调查一下为什么ngen在跑步。然而,这是一个五年前的问题,他们早就做了一些大的优化,这个问题可能已经不存在了。@LasseVågsætherKarlsen我同意这不是完美的解决方案。我只是想分享我的经验,以便其他人可以从中受益,如果他们喜欢阻止ngen.exe运行。我在不同的网站上尝试了许多不同的解决方案,但没有一个对我有效。作为最后一个决议,我不得不重命名ngen.exe。仅供参考,我最近遇到了这个问题(所以不是老问题)。这是我第一次尝试通过加入堆栈溢出来帮助其他开发人员。很遗憾,你否决了我的答案,但你当然有权利这样做。干杯