/ / Wykorzystanie pamięci podczas aktualizacji etykiety z kontrolą System.Windows.Forms.Timer - .net, winforms, garbage-collection, timer

Wykorzystanie pamięci podczas aktualizacji etykiety z kontrolką System.Windows.Forms.Timer - .net, winforms, usuwanie śmieci, timer

Mam formularz z etykietą, który jest aktualizowany przezKontrola System.Windows.Forms.Timer co 2 sekundy. W menedżerze zadań widzę, że zużycie pamięci rośnie, nawet jeśli program nic nie robi (ale etykieta nadal jest aktualizowana o najnowsze informacje, czyli na przykład zużycie pamięci) Przykładowy kod tekstu etykiety:

tlblRam.Text = string.Format("Ram: {0} MB", ConvertBytesToMegabytes(System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64).ToString("0.00"));

Ale jeśli zmuszę GC do zbierania pokoleń-przywraca całą pamięć do jakiegoś niższego stanu. Jest to również wykonywane automatycznie po ~ 5 minutach pracy nieaktywnego programu. Czy to oznacza, że ​​GC czeka na swój cykl drugiej generacji i dopiero wtedy zbiera wszystkie ciągi znaków, które były wartościami tlblRam.Text?

Odpowiedzi:

1 dla odpowiedzi № 1

Czy to oznacza, że ​​GC czeka na swój cykl drugiej generacji i dopiero wtedy zbiera wszystkie ciągi znaków, które były wartościami tlblRam.Text?

Zasadniczo tak. Prawdopodobnie będzie więcej rzeczy żądających i zwalniających pamięć w uruchomionej aplikacji Windows.

Co ważniejsze: nie martw się, nie ma tutaj problemu. Nie próbuj „pomagać”, uruchamiając y = GC ręcznie, tylko pogorszysz sytuację.