svchost.exe -k netsvcs占用> 1GB的内存

我注意到我的生产服务器“svchost.exe -k netsvcs”正在占用> 1GB的RAM内存,稳定的,我认为是有点过分。

这是tasklist / svc会给我这个过程:

Appinfo, CertPropSvc, gpsvc, IKEEXT, iphlpsvc, LanmanServer, ProfSvc, Schedule, SENS, SessionEnv, ShellHWDetection, Winmgmt, wuauserv 

我想知道是什么可能是列出的stream程负责这个内存泄漏,以及如何解决这个问题。 过去有没有人有过这样的行为?

服务器运行Windows Server 2008 R2(内部版本7601:Service Pack 1),它的主要function是运行内部应用程序处理器工作人员。

问题是,这是泄漏吗? 你说内存使用是“稳定的”。

泄漏=内存使用量随着时间的推移而增加,永远不会减less,所以您不得不每隔一段时间重新加载一次服务器。

如果长时间(例如两周)的时间大概在1GB左右,那么情况是非常正常的。 现代软件在必要的时候使用空闲内存,我知道一些程序只是为了节省内存分配的时间。

如果不妨碍系统的操作,请不要触摸它。

与重用现有的已分配内存相比,内存分配在CPU周期上非常昂贵。 一旦程序启动,往往一旦完成其function,就不会“放开”这个内存。

例如,Firefox持有一段时间的内存。 如果您在Firefox打开的情况下将计算机保持开启一周,您将注意到它会不断增加内存大小。 在YouTubing,Google Play音乐和浏览器之后,我的内存达到了2-4GB,重新启动后缩小到300MB。 这是因为它的cachingfunction,而这种行为是通过devise的。

我倾向于认为,SVCHost过程是完全按照它应该做的。 您的服务器运行了多less服务? 1GB不听起来有关 – 虽然这取决于你正在运行的服务。

下一步,如果您想进一步调查,我会安装进程资源pipe理器(procexp.exe),您可以在Microsoft网站上find它。 这将为您提供哪些服务使用此过程(请参阅procexp的截图),然后可以停止/启动服务,并查看特定服务是否与释放/获取大内存分配相关联。 它也会告诉你,如果它是工作集或私人(=主要是堆)分配的内存。 如果它与特定的服务绑定,那么你将有更清晰的path进一步研究。

毫无疑问,您需要在约定的停机/维护窗口中进行此testing,或在testing服务器上进行复制,因为您将中断正常操作。 testing完成后,重新启动并检查服务列表是否回到正常运行集。

屏幕截图: http://i.imgur.com/20Ij6Mi.png