Che cos'è il processo Collector di Visual Studio Standard e perché utilizza 10 GB di RAM?


21

Spero che questo sia il sito giusto per lo scambio di stack su cui pubblicare ... Non pensavo fosse una domanda di programmazione per SO. Ad ogni modo, sto eseguendo Visual Studio 2015 e ho ricevuto una notifica da Windows per chiudere VS2015 perché sta esaurendo la memoria. Ho 24 GB di RAM e sono appena stato riavviato ieri, quindi penso che qualcosa sia fuori posto qui. A volte uso la finestra interattiva C # e la finestra interattiva di Python 2.7, ma quelle non erano in uso al momento di questo messaggio.

Nota: mentre sto scrivendo, ho appena ricevuto un messaggio "Unknown hard crash" da devenv.exe (processo vs2015). Ma il servizio Standard Collector è ancora in esecuzione utilizzando fino a 10,7 GB.

Qualcuno sa cos'è lo Standard Collector? E cosa potrebbe causare un picco dell'utilizzo della RAM?

Nota: di nuovo mentre scrivo, ho appena notato che il servizio di raccolta standard è stato interrotto nel mio task manager e ho recuperato tutta la mia RAM.

Grande utilizzo della RAM da parte di un processo "Standard Collector" di Visual Studio

Aggiornamento: sembra che questo potrebbe essere un bug che il team VS ha cercato di correggere nell'aggiornamento 1. Ho sicuramente installato l'aggiornamento 1, ma forse dovrei provare a riprodurre un po 'di codice di esempio e inviarlo al team VS. Anche l'istanza di devenv che si è arrestata in modo anomalo non era attualmente in fase di debug. (Sebbene, ci sia un'altra istanza in cui è il debug, come puoi vedere dall'estensione .vshost.exe in Task Manager)

Quell'istanza di Devenv non si è arrestata in modo anomalo e attualmente è ancora in esecuzione nel debugger senza problemi.

inserisci qui la descrizione dell'immagine


Si occupa di strumenti diagnostici. . Sei a conoscenza del fatto che Chrome esiste come processo a 64 bit, giusto?
Ramhound,

1
questo è un bug noto e ha una correzione con un controllo di aggiornamento qui per informazioni: connect.microsoft.com/VisualStudio/feedback/details/1630071/…
arana

@arana, sto eseguendo l'aggiornamento 1, che "dovrebbe" avere la correzione ...
C. Tewalt

1
@Ramhound Chrome non è pertinente a questa domanda. O stai solo gentilmente condividendo un utile boccone di informazioni?
C. Tewalt,

Risposte:


16

Il processo di raccolta sembra essere correlato alla strumentazione / diagnostica del codice in esecuzione in modalità debug, in Visual Studio 2015. Microsoft ha riconosciuto l'esistenza di un problema con l'utilizzo illimitato della memoria di questo processo e afferma: "Abbiamo studiato la causa principale e fatto una correzione che sarà fornita nell'aggiornamento VS2015 1 "

Quindi assicurati di ottenere l'ultimo aggiornamento di Visual Studio 2015. Per l'attenuazione nel frattempo:

"Nel frattempo, se noti che il processo consuma troppa memoria, hai due modi per ripristinarlo. Il più semplice è semplicemente riavviare il computer. Ciò riporterà tutto a un nuovo stato. L'altra cosa che puoi fare per alleviare il consumo di memoria è per interrompere il servizio di raccolta standard di Visual Studio utilizzando l'interfaccia utente di Service Manager. Il nome del servizio è "VSStandardCollectorService140". Può essere arrestato in modo sicuro quando non si esegue il debug con Visual Studio. Se si interrompe il servizio durante il debug (anche a un punto di interruzione ) quindi la finestra Strumenti di diagnostica visualizzerà un messaggio di errore dopo aver ripreso il processo di destinazione del debug. "

Guarda questo link, da dove provengono le citazioni di cui sopra: https://connect.microsoft.com/VisualStudio/feedback/details/1630071/visual-studio-standard-collector-unbounded-memory-usage

Questo link contiene anche un esempio di codice di qualcuno che ha riscontrato questo da un'app console. Potrebbe valere la pena eseguire quel codice di esempio per vedere se innesca il problema sul tuo sistema. La persona che ha segnalato il problema ha anche indicato che si è verificato in modo intermittente, ma l'esecuzione del codice in modalità debug di Visual Studio sembrava essere l'unico thread comune.

Forse Microsoft ha risolto alcune cause alla radice del problema, ma ci sono ancora altre cause non risolte.


1
Un modo semplice (Windows 7 / Windows 10) per visualizzare la GUI dei servizi consiste nell'eseguire Start / Esegui e digitare "services.msc" e premere Invio. Nell'elenco dei servizi sulla mia macchina Windows 7, il nome che credo sia quello menzionato viene mostrato come "Servizio di raccolta standard di Visual Studio".
Developer63 - GoFund Monica

Interessante, anche se ho installato l'aggiornamento 1 -> quindi perché uso la finestra interattiva c # (disponibile solo nell'aggiornamento 1). Interessante che il codice di esempio dal tuo link riprodotto dal ragazzo utilizzi Attività. La mia applicazione fa un uso equo delle attività e anche del codice asincrono.
C. Tewalt,

@matrixugly, a quanto ho capito il problema, il servizio di raccolta è praticamente sempre in esecuzione quando VS2015 è in esecuzione, raccogliendo informazioni sulla strumentazione / diagnostica. Quindi quello che stavi facendo nel momento in cui Windows ha dato l'avviso di memoria insufficiente potrebbe o meno avere alcuna relazione con il problema. Potrebbe essere stato qualcosa di molto prima, in cui il processo del servizio di raccolta non è riuscito a riconoscerlo necessario per iniziare a cancellare i vecchi dati della strumentazione, a riempire gradualmente la memoria e il messaggio è apparso ore dopo durante un'attività non correlata.
Developer63 - GoFund Monica

7
Esiste ancora nell'aggiornamento 3 RC. :(
SayusiAndo il

1
È ancora un problema per VS2017? In tal caso, quali sono le conseguenze della disabilitazione di questo servizio?
tira il

2

Disabilita il servizio e non consumerà più la tua memoria.

Strumenti-> Opzioni-> Debug-> Generale, disabilita "Abilita strumenti diagnostici durante il debug".


2
Dovresti anche ricordare che non avrai strumenti diagnostici che fanno parte della suite di debug che molte persone usano.
lancia

1
Personalmente, come sviluppatore, ho sempre disabilitato gli strumenti diagnostici perché ho sentito che ha reso la mia macchina molto più lenta dalla prima volta che l'ho vista, e abilitarlo solo quando ho effettivamente un problema di prestazioni che devo diagnosticare (che è piuttosto raro), e comunque, una sessione di profilazione di solito mi dà molte più informazioni. Sono abbastanza curioso di sapere per cosa le persone lo userebbero regolarmente.
Eduardo Wada,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.