Aby pisać kod, który jest wydajny i optymalny należy dobrze zrozumieć jak działa Garbage Collector (GC). W dzisiejszym poście przedstawię ogólne zasady działania GC na przykładzie algorytmu mark and sweep. Zaznaczam, że implementacja w .NET różni się i jest dużo bardziej wyrafinowana – ale o tym w następnych postach. Chcę najpierw przedstawić algorytm mark and sweep ponieważ da to czytelnikowi ogólny obraz zagadnienia związanego ze zwalnianiem pamięci w językach zarządzanych. Garbage Collector oczywiści...
W C++ nie ma mechanizmu typu garbage collector, więc jedyne automatyczne zwalnianie obiektów, jakie w tym języku występuje, dotyczy tych lokalnych - tworzonych na stosie. Dlatego wszelkiego typu pomocnicze obiekty (np. uchwyty do zewnętrznych zasobów, jak pliki) deklaruje się tu zwykle jako właśnie zmienne lokalne. W innych językach z kolei - dokładniej: w tych, w których GC występuje - praktycznie wszystkie...
Autor: Dziś znalazłem fajną rzecz dostępną w R#. Być może jest to coś oczywistego, o czym wszyscy (korzystający z tego dodatku) wiedzieli, a może nie. Piszę, bo już wielokrotnie w przeszłości okazywało się, iż rzeczy najprostsze są najmniej oczywiste. Po zaznaczeniu tej opcji w ustawieniach, na dole w status barze VS pojawia nam się znacznik ile pamięci nasze VS zużywa. Powie ktoś – nic takiego. Racja. Jednak najlepsze pojawia się, gdy klikniemy na tą wartość prawym przyciskiem myszy i wybierzemy Collec...
W artykule opisane są pewne fundamenty programowania w C#. Każdy znajdzie tu coś dla siebie. Początkujący programiści C# dowiedzą się jak działają obiekty w .NET, co to jest kod zarządzany i jak w tytule - jak działa Garbage Collector. Bardziej doświadczeni również nie powinni się zawieść i może dowiedzą się czegoś nowego.
Może temat trochę na wyrost, ale już wyjaśniam o co chodzi. Czym jest że tak teoria spiskowa w .NET. Dla mnie jest to dziwne przeświadczenie dużej liczby programistów, że skoro w .NET istnieje Garbage Collector to pojęcie Memory Leaków nie istnieje. Nie chodzmi mi tu o zasoby rzadządzalne, które już znaczna część programistów wie, że należy zwalniać (wołając Dispose, bądź używając klauzuli using), ale o te zarządzalne. Jak to zatem możliwe, możesz spytać? Garbage Collector to bardzo użyteczne "stworzenie...