什么是Visual Studio Standard Collector进程,为什么要使用10GB的RAM?


21

希望这是可以在其上发布的正确的堆栈交换站点...好像这不是SO的编程问题。无论如何,我正在运行Visual Studio 2015,并收到Windows的通知以关闭VS2015,因为它内存不足。我有24GB的RAM,昨天才重新启动,所以我认为这里有一段距离。有时我会使用C#交互式窗口和python 2.7交互式窗口,但在此消息发布之时尚未使用它们。

注意:在撰写本文时,我刚从devenv.exe(vs2015进程)收到“未知的硬崩溃”消息。但是Standard Collector服务仍在使用10.7GB的内存运行。

有人知道标准收集器是什么吗?什么可能导致RAM使用率飙升?

注意:在我写这篇文章时,我再次注意到Standard Collector Service在我的任务管理器中停止了,我的所有RAM都还给我。

Visual Studio“标准收集器”进程占用大量RAM

更新:听起来这可能是VS团队试图在更新1中修复的错误。我确实已经安装了更新1,但是也许我应该尝试重现一些示例代码并将其发送给VS团队。崩溃的devenv实例当前也未调试。(尽管有另一个实例正在调试,如任务管理器中的.vshost.exe扩展所看到的)

该devenv实例没有崩溃,实际上它现在仍在调试器中运行,没有任何问题。

在此处输入图片说明


它处理诊断工具。。您知道Chrome作为64位进程存在吗?
Ramhound

1
这是一个已知的错误,它具有一个修复程序,并在此处提供有关更新的信息:connect.microsoft.com/VisualStudio/feedback/details/1630071/…–
arana

@arana,我正在运行更新1,“应”已修复...
C. Tewalt 2016年

1
@Ramhound Chrome与这个问题并不相关。还是您只是在分享有用的信息?
C. Tewalt '16

Answers:


16

在Visual Studio 2015中,收集器进程似乎与在调试模式下运行的代码的检测/诊断有关。Microsoft承认,此进程的内存不受限制存在问题,并说:“我们已经研究了根本原因,并且做了将在VS2015 Update 1中提供的修复程序”

因此,请确保您获得了最新的Visual Studio 2015更新。在此期间进行缓解:

“与此同时,如果您注意到该进程消耗了太多内存,则有两种恢复方法。最简单的方法是重新启动计算机。这将使一切恢复到全新的状态。您可以采取的另一种减轻内存消耗的措施是使用Service Manager UI停止Visual Studio Standard Collector服务。该服务的名称为“ VSStandardCollectorService140”。当您不使用Visual Studio进行调试时,可以安全地停止它。如果在调试时停止了该服务(甚至在断点处停止) ),那么在您恢复调试目标进程后,“诊断工具”窗口将显示一条错误消息。”

查看此链接,上面的引号来自:https : //connect.microsoft.com/VisualStudio/feedback/details/1630071/visual-studio-standard-collector-unbounded-memory-usage

此链接还提供了通过控制台应用程序体验过此操作的人员的代码示例。可能值得运行该示例代码以查看它是否触发了系统上的问题。报告此问题的人还指出,它是间歇性发生的,但是在Visual Studio调试模式下运行代码似乎是一个常见的线程。

Microsoft可能修复了此问题的某些根本原因,但现在还有其他未解决的原因浮出水面。


1
弹出服务GUI的一种简单方法(Windows 7 / Windows 10)是启动/运行并键入“ services.msc”,然后按Enter。在Windows 7机器上的服务列表中,我认为提到的名称显示为“ Visual Studio Standard Collector Service”。
Developer63-GoFund Monica

有趣的是,尽管我确实安装了Update 1->因此,为什么要使用c#交互式窗口(仅在Update 1中可用)。有趣的是,家伙复制的链接中的示例代码使用了Tasks。我的应用程序还合理地使用了任务和异步代码。
C. Tewalt '16

@matrixugly,据我所知,在VS2015运行时,收集器服务基本上一直在运行,并收集应用程序检测/诊断信息。因此,当Windows发出内存不足警报时,您正在做的事情可能与该问题没有任何关系。可能是更早的事情,Collector Service进程无法识别它需要开始清除旧的仪器数据,逐渐填满内存,并且消息在不相关的活动几小时后出现。
Developer63-GoFund Monica

7
在Update 3 RC中仍然存在。:(
SayusiAndo

1
这对VS2017来说还是个问题吗?如果是这样,禁用此服务会有什么后果?

2

禁用该服务,它将不会再次占用您的内存。

工具->选项->调试->常规,禁用“调试时启用诊断工具”。


2
您还应该提到,您将没有诊断工具,这是许多人使用的调试套件的一部分。
轧辊

1
就个人而言,作为开发人员,我总是禁用诊断工具,因为自从我第一次看到它以来,它就使我的机器变慢了很多,并且仅在我确实需要诊断的性能问题时才启用它(这相当很少),而且,性能分析会话通常可以为我提供更多信息。我很想知道人们会定期使用它什么。
爱德华多·瓦达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.