¿Qué es el proceso de Visual Studio Standard Collector y por qué utiliza 10 GB de RAM?

21

Esperemos que este sea el sitio de intercambio de pila correcto para publicar ... No parecía que fuera una pregunta de programación para SO. De todos modos, estoy ejecutando Visual Studio 2015 y recibí una notificación de Windows para cerrar VS2015 porque se está quedando sin memoria. Tengo 24 GB de RAM y acabo de reiniciar ayer, así que creo que algo está muy lejos de aquí. A veces uso la ventana interactiva C # y la ventana interactiva python 2.7, pero no estaban en uso en el momento de este mensaje.

Nota: Mientras escribo esto, acabo de recibir un mensaje de "Fallo duro desconocido" de devenv.exe (proceso vs2015). Pero el servicio Standard Collector todavía se está ejecutando usando hasta 10.7GB.

¿Alguien sabe qué es el colector estándar? ¿Y qué puede hacer que aumente el uso de RAM?

Nota: De nuevo, mientras escribo, me di cuenta de que el Servicio de recopilador estándar se detuvo en mi administrador de tareas y recuperé toda mi RAM.

Gran uso de RAM por un proceso de Visual Studio "Standard Collector"

Actualización: Parece que esto podría ser un error que el equipo de VS intentó corregir en la actualización 1. Definitivamente tengo la actualización 1 instalada, pero tal vez debería intentar reproducir algún código de muestra y enviarlo al equipo de VS. La instancia de devenv que se bloqueó tampoco estaba depurando actualmente. (Aunque hay otra instancia en la que se está depurando, como puede ver con la extensión .vshost.exe en el administrador de tareas)

Esa instancia devenv no se bloqueó y en realidad todavía se está ejecutando en el depurador ahora sin problemas.

ingrese la descripción de la imagen aquí

C. Tewalt
fuente
Se trata de herramientas de diagnóstico. . ¿Sabe que Chrome existe como un proceso de 64 bits, verdad?
Ramhound
1
Este es un error conocido y tiene una solución con una actualización de verificación aquí para obtener información: connect.microsoft.com/VisualStudio/feedback/details/1630071/…
arana
@arana, estoy ejecutando la actualización 1, que "debería" tener la solución ...
C. Tewalt
1
@Ramhound Chrome no es realmente relevante para esta pregunta. ¿O simplemente está compartiendo amablemente un dato útil de información?
C. Tewalt

Respuestas:

16

El proceso del recopilador parece estar relacionado con la instrumentación / diagnóstico del código que se ejecuta en modo de depuración, en Visual Studio 2015. Microsoft ha reconocido que existe un problema con el uso ilimitado de la memoria de este proceso y dice: "Hemos investigado la causa raíz y hemos hizo una corrección que se proporcionará en VS2015 Actualización 1 "

Así que asegúrese de obtener la última actualización de Visual Studio 2015. Para la mitigación mientras tanto:

"Mientras tanto, si notas que el proceso consume demasiada memoria, tienes dos formas de recuperarlo. Lo más simple es simplemente reiniciar tu máquina. Eso hará que todo vuelva a un estado fresco. La otra cosa que puedes hacer para aliviar el consumo de memoria es para detener el servicio de Visual Studio Standard Collector utilizando la interfaz de usuario de Service Manager. El nombre del servicio es "VSStandardCollectorService140". Se puede detener de forma segura cuando no se depura con Visual Studio. Si detiene el servicio durante la depuración (incluso se detuvo en un punto de interrupción ), la ventana Herramientas de diagnóstico mostrará un mensaje de error después de que reanude el proceso de depuración de destino ".

Mire este enlace, donde se obtienen las citas anteriores: https://connect.microsoft.com/VisualStudio/feedback/details/1630071/visual-studio-standard-collector-unbounded-memory-usage

Este enlace también tiene un ejemplo de código de alguien que experimentó esto desde una aplicación de consola. Podría valer la pena ejecutar ese código de muestra para ver si desencadena el problema en su sistema. La persona que informó el problema también indicó que ocurrió de manera intermitente, pero ejecutar el código en modo de depuración de Visual Studio parecía ser el único hilo común.

Posiblemente Microsoft solucionó algunas causas raíz del problema, pero todavía hay otras causas no solucionadas que están surgiendo.

Desarrollador63 - GoFund Monica
fuente
1
Una forma simple (Windows 7 / Windows 10) de abrir la GUI de servicios es hacer Inicio / Ejecutar y escribir "services.msc" y presionar Entrar. En la lista de servicios en mi máquina con Windows 7, el nombre que creo que es el mencionado aparece como "Visual Studio Standard Collector Service".
Desarrollador63 - GoFund Monica
Interesante, aunque tengo instalada la Actualización 1 -> por eso uso la ventana interactiva c # (solo disponible en la Actualización 1). Es interesante que el código de ejemplo de su enlace que reprodujo el tipo use Tareas. Mi aplicación también hace un uso justo de las tareas y del código asíncrono.
C. Tewalt el
@matrixugly, según tengo entendido el problema, el servicio del recopilador básicamente se ejecuta todo el tiempo cuando VS2015 se está ejecutando, recopilando información de diagnóstico / instrumentación de la aplicación. Entonces, lo que estaba haciendo en el momento en que Windows emitió la alerta de poca memoria puede o no tener alguna relación con el problema. Podría haber sido algo mucho antes, donde el proceso del Servicio de recopilador no reconoció que necesitaba comenzar a borrar los datos de instrumentación antiguos, llenó gradualmente la memoria y el mensaje apareció horas después durante una actividad no relacionada.
Desarrollador63 - GoFund Monica
77
Todavía existe en la Actualización 3 RC. :(
SayusiAndo
1
¿Sigue siendo un problema para VS2017? Si es así, ¿cuáles son las consecuencias de deshabilitar este servicio?
rueda
2

Deshabilite el servicio y no volverá a comer su memoria.

Herramientas-> Opciones-> Depuración-> General, deshabilite "Habilitar herramientas de diagnóstico durante la depuración".

Sumit Joshi
fuente
2
También debe mencionar que no tendrá herramientas de diagnóstico que formen parte del conjunto de depuración que utilizan muchas personas.
llega
1
Personalmente, como desarrollador, siempre desactivé las herramientas de diagnóstico porque sentí que hacía que mi máquina fuera mucho más lenta desde la primera vez que la vi, y solo la habilito cuando realmente tengo un problema de rendimiento que necesito diagnosticar (lo cual es bastante raro), y aún así, una sesión de creación de perfiles generalmente me da mucha más información. Tengo curiosidad por saber para qué lo usaría la gente de forma regular.
Eduardo Wada