Co to jest proces Visual Studio Standard Collector i dlaczego używa 10 GB pamięci RAM?

21

Mam nadzieję, że jest to odpowiednia strona wymiany stosów, na której można publikować ... Nie wydawało mi się, żeby było to pytanie programistyczne dla SO. W każdym razie korzystam z programu Visual Studio 2015 i dostałem powiadomienie do systemu Windows o zamknięciu VS2015, ponieważ brakuje mu pamięci. Mam 24 GB pamięci RAM i właśnie zrestartowałem wczoraj, więc myślę, że coś jest nie tak. Czasami używam interaktywnego okna C # i interaktywnego okna Pythona 2.7, ale te nie były używane w momencie tej wiadomości.

Uwaga: pisząc to, właśnie otrzymałem komunikat „Nieznana twarda awaria” z devenv.exe (proces vs2015). Ale usługa Standard Collector nadal działa z wykorzystaniem 10,7 GB.

Czy ktoś wie, czym jest Standard Collector? A co może spowodować gwałtowne zwiększenie zużycia pamięci RAM?

Uwaga: Ponownie, gdy piszę, zauważyłem, że Standardowa Usługa Kolektora zatrzymała się w menedżerze zadań i odzyskałem całą pamięć RAM.

Duże użycie pamięci RAM przez proces programu Visual Studio „Standard Collector”

Aktualizacja: Wygląda na to, że może to być błąd, który zespół VS próbował naprawić w aktualizacji 1. Zdecydowanie mam zainstalowaną aktualizację 1, ale być może powinienem spróbować odtworzyć jakiś przykładowy kod i wysłać go do zespołu VS. Instancja devenv, która uległa awarii, również nie była obecnie debugowana. (Istnieje jednak inna instancja, w której debuguje, co widać po rozszerzeniu .vshost.exe w menedżerze zadań)

Ta instancja devenv nie uległa awarii i nadal działa bez problemu w debuggerze.

wprowadź opis zdjęcia tutaj

C. Tewalt
źródło
Dotyczy narzędzi diagnostycznych. . Czy wiesz, że Chrome istnieje jako proces 64-bitowy, prawda?
Ramhound
1
jest to znany błąd i został naprawiony dzięki aktualizacji sprawdź tutaj, aby uzyskać informacje: connect.microsoft.com/VisualStudio/feedback/details/1630071/...
arana
@arana, uruchamiam aktualizację 1, która „powinna” mieć poprawkę ...
C. Tewalt
1
@Ramhound Chrome tak naprawdę nie ma związku z tym pytaniem. A może dzielisz się pożytecznym smakołykiem?
C. Tewalt

Odpowiedzi:

16

Proces kolektora wydaje się być związany z oprzyrządowaniem / diagnostyką kodu działającego w trybie debugowania w Visual Studio 2015. Microsoft przyznał, że istnieje problem z nieograniczonym wykorzystaniem pamięci przez ten proces i mówi: „Zbadaliśmy pierwotną przyczynę i wprowadzono poprawkę, która będzie dostępna w aktualizacji VS2015 Update 1 ”

Upewnij się więc, że otrzymujesz najnowszą aktualizację programu Visual Studio 2015. Tymczasem w celu złagodzenia:

„Tymczasem, jeśli zauważysz, że proces zużywa zbyt dużo pamięci, masz dwa sposoby na odzyskanie. Najprostszym jest po prostu zrestartowanie komputera. To wszystko przywróci nowy stan. Inną rzeczą, którą możesz zrobić, aby zmniejszyć zużycie pamięci, jest aby zatrzymać usługę Visual Studio Standard Collector Service przy użyciu interfejsu użytkownika Service Manager. Nazwa usługi to „VSStandardCollectorService140”. Można ją bezpiecznie zatrzymać, gdy nie debugujesz za pomocą Visual Studio. Jeśli zatrzymasz usługę podczas debugowania (nawet zatrzymany w punkcie przerwania ), a następnie okno Narzędzia diagnostyczne wyświetli komunikat o błędzie po wznowieniu docelowego procesu debugowania. ”

Spójrz na ten link, z którego pochodzą powyższe cytaty: https://connect.microsoft.com/VisualStudio/feedback/details/1630071/visual-studio-standard-collector-unbounded-memory-usage

Ten link zawiera także przykładowy kod osoby, która doświadczyła tego z aplikacji konsoli. Warto uruchomić ten przykładowy kod, aby sprawdzić, czy powoduje on problem w systemie. Osoba, która zgłosiła problem, wskazała również, że występował sporadycznie, ale uruchamianie kodu w trybie debugowania programu Visual Studio wydawało się być jednym wspólnym wątkiem.

Być może Microsoft naprawił niektóre podstawowe przyczyny tego problemu, ale nadal pojawiają się inne nieusunięte przyczyny.

Developer63 - GoFund Monica
źródło
1
Jednym prostym sposobem (Windows 7 / Windows 10), aby uruchomić GUI usług, jest uruchomienie / uruchomienie i wpisanie „services.msc” i naciśnięcie Enter. Na liście usług na moim komputerze z systemem Windows 7 nazwa, o której wierzę, jest wymieniona jako „Visual Studio Standard Collector Service”.
Developer63 - GoFund Monica
Ciekawe, chociaż mam zainstalowaną aktualizację 1 -> dlatego używam interaktywnego okna c # (dostępne tylko w aktualizacji 1). Ciekawe, że przykładowy kod z linku, który odtworzył facet, używa Zadań. Moja aplikacja również dobrze wykorzystuje zadania i kod asynchroniczny.
C. Tewalt
@matrixugly, jak rozumiem problem, usługa kolekcjonerska działa zasadniczo cały czas, gdy działa VS2015, zbierając informacje o oprzyrządowaniu / diagnostyce aplikacji. Więc to, co robiłeś w czasie, gdy system Windows powiadomił o niskim poziomie pamięci, może, ale nie musi mieć związku z tym problemem. Mogło to być coś znacznie wcześniej, gdy proces usługi kolekcjonerskiej nie rozpoznał, że konieczne jest rozpoczęcie czyszczenia starych danych oprzyrządowania, stopniowe zapełnianie pamięci, a komunikat pojawił się kilka godzin później podczas niezwiązanej działalności.
Developer63 - GoFund Monica
7
Nadal istnieje w aktualizacji 3 RC. :(
SayusiAndo
1
Czy to wciąż stanowi problem dla VS2017? Jeśli tak, jakie są konsekwencje wyłączenia tej usługi?
rzuca
2

Wyłącz usługę, a ona nie zje ponownie pamięci.

Narzędzia-> Opcje-> Debugowanie-> Ogólne, wyłącz „Włącz narzędzia diagnostyczne podczas debugowania”.

Sumit Joshi
źródło
2
Powinieneś również wspomnieć, że nie będziesz mieć narzędzi diagnostycznych, które są częścią pakietu debugowania, z którego korzysta wiele osób.
rzuca
1
Osobiście, jako programista, zawsze wyłączałem narzędzia diagnostyczne, ponieważ czułem, że spowolniłem moją maszynę od pierwszego razu i włączam ją tylko wtedy, gdy mam problem z wydajnością, który muszę zdiagnozować (co jest dość rzadko), a mimo to sesja profilowania zwykle daje mi znacznie więcej informacji. Jestem ciekawy, do czego ludzie używaliby go regularnie.
Eduardo Wada,