Pytania otagowane jako garbage-collection

2
Czym różni się odśmiecanie śmieci w czystych językach?
W czystym języku, takim jak Haskell, wszystkie dane są niezmienne i nie można w żaden sposób zmieniać istniejących struktur danych. Ponadto wiele algorytmów niezmiennych danych i wzorców programowania funkcjonalnego generuje duże ilości śmieci z natury ( mapna przykład łańcuchy tworzenia list pośrednich). Jakie strategie i techniki stosują śmieciarze w obliczu …

6
Dlaczego zespół LMAX wykorzystał Javę i zaprojektował architekturę, aby za wszelką cenę unikać GC?
Dlaczego zespół LMAX zaprojektował LMAX Disruptor w Javie, ale wszystkie ich punkty konstrukcyjne minimalizują użycie GC? Jeśli nie chce się uruchamiać GC, to po co używać języka bezużytecznego? Ich optymalizacje, poziom wiedzy o sprzęcie i myśl, którą włożyli, są po prostu niesamowite, ale dlaczego Java? Nie jestem przeciwny Jawie ani …

9
Jakie są złożoności programowania niezarządzanego pamięcią?
Lub innymi słowy, jakie konkretne problemy rozwiązało automatyczne usuwanie śmieci? Nigdy nie programowałem na niskim poziomie, więc nie wiem, jak skomplikowane może być uwolnienie zasobów. Tego rodzaju błędy, które GC wydaje (przynajmniej zewnętrznemu obserwatorowi), są czymś, czego nie zrobiłby programista dobrze znający swój język, biblioteki, koncepcje, idiomy itp. Ale mogę …



6
W jaki sposób śmieciarz zapobiega skanowaniu całej pamięci przy każdym zbieraniu?
Niektóre śmieciarki (przynajmniej Mono i .NET) mają obszar pamięci krótkotrwałej, który często skanują, oraz obszar pamięci pomocniczej, który skanują rzadziej. Mono nazywa to żłobkiem. Aby dowiedzieć się, które obiekty można usunąć, skanują wszystkie obiekty, zaczynając od korzeni, stosu i rejestrów, i usuwają wszystkie obiekty, do których nie ma już odniesienia. …


3
Czy użycie tablicy skrótów w procesie odśmiecania rozwiązałoby problem zatrzymania światowego znaku i zamiatania?
W algorytmie zbierania śmieci mark-sweep-compact musisz zatrzymać świat podczas przenoszenia obiektów, ponieważ wykres odniesienia staje się niespójny i musisz zastąpić wartości wszystkich odniesień wskazujących na obiekt. Ale co, gdybyś miał tablicę skrótów z identyfikatorem obiektu jako kluczem i wskaźnikiem jako wartością, a referencje wskazywałyby na wspomniany identyfikator zamiast adresu obiektu …

2
Ponieważ Garbage Collection jest niedeterministyczny, dlaczego nie jest wykorzystywany do bezpiecznego generowania liczb losowych?
Rozumiem, że / dev / random jest dobrym źródłem entropii i jest to zwykle używane. Tak jak czytam na GC, przynajmniej w Javie, wydaje się akceptowane, że demon odśmiecania działa w sposób niedeterministyczny . Jeśli to prawda, to dlaczego nie używamy czasu wyrzucania elementów bezużytecznych jako źródła entropii zamiast zmiennej …

4
Jakie algorytmy kryją się za GC z niską pauzą?
Niektóre języki, na przykład java, wprowadziły GC z małą pauzą. Ci GC mogą wykonać większość pracy bez zatrzymywania całego świata. Jest to oczywiście dość trudny problem, ponieważ wymaga analizy pamięci, gdy wątek ją modyfikuje, w wyniku czego powstają dane, które można wykorzystać na początku procesu, a nie już po jego …

5
Wzorzec zliczania odniesienia dla języków zarządzanych w pamięci?
Java i .NET mają wspaniałe kolektory śmieci, które zarządzają pamięcią dla Ciebie, i wygodne wzorce do szybkiego uwalniania obiektów zewnętrznych ( Closeable, IDisposable), ale tylko jeśli są własnością jednego obiektu. W niektórych systemach zasób może wymagać niezależnego zużycia przez dwa składniki i może zostać zwolniony tylko wtedy, gdy oba składniki …


3
Dlaczego platformy mobilne nie obsługują generowania pamięci śmieci?
Zarówno Windows Phone / Xbox, jak i Android nie obsługują generowania śmieci w trybie pokoleniowym. Jest to frustrujące dla wielu programistów. Wydaje się, że jest to uzasadniony powód techniczny, ale nie mogę tego rozgryźć. Obecne telefony mają więcej pamięci i prawdopodobnie lepsze procesory niż komputery stacjonarne / laptopy z systemem …

4
Czy niedeterministyczne zarządzanie zasobami jest nieszczelną abstrakcją?
Z tego, co widzę, istnieją dwie wszechobecne formy zarządzania zasobami: zniszczenie deterministyczne i wyraźne. Przykładami tego pierwszego byłyby niszczyciele i inteligentne wskaźniki C ++ lub podrzędny DESTROY Perla, a drugim przykładem byłby paradygmat Ruby do zarządzania zasobami lub interfejs IDNET .NET. Wydaje się, że nowsze języki wybierają to drugie, być …

4
Zarządzanie pamięcią do szybkiego przesyłania wiadomości między wątkami w C ++
Załóżmy, że istnieją dwa wątki, które komunikują się poprzez asynchroniczne wysyłanie do siebie komunikatów danych. Każdy wątek ma jakąś kolejkę komunikatów. Moje pytanie jest bardzo niskie: czego można się spodziewać jako najbardziej efektywnego sposobu zarządzania pamięcią? Mogę wymyślić kilka rozwiązań: Nadawca tworzy obiekt przez new. Połączenia z odbiorcą delete. Pula …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.