2010-05-26 14 views
10

Czytałem poprzez książki Jones & Lins na wywóz śmieci, który został opublikowany w 1996 rokuPodsumowanie ostatniej dekady zbierania śmieci?

Oczywiście, świat computing zmienił się radykalnie od tego czasu: wielordzeniowe, out-of-porządkowych wiórów z dużych skrytek, i jeszcze większa pamięć główna w komputerach. Świat w mniejszym lub większym stopniu skupił się na mikroarchitekturze x86 i ARM dla większości systemów skierowanych do konsumentów.

Jakie są najważniejsze postępy od czasu publikacji nowatorskiej książki?

W szczególności szukam wskazówek do artykułów, algorytmów, rozpraw i tym podobnych, reprezentujących postępy w teorii zbierania śmieci.

+0

* „szukam w szczególności wskaźniki do papierów, algorytmy, rozpraw, i tym podobne, co stanowi postęp zarówno w teorii i praktyce zbierania śmieci.” * - Zadawanie na StackOverflow jest NIEPRAWIDŁOWY sposób przeprowadzenia badania literatury (lub ogólnie "badań"). Doktoranci - NIE stosujcie się do tego przykładu. –

+0

Za to, co jest warte, nie byłem doktorantem (ani żadnym innym badaczem) w momencie, gdy zadawałem to pytanie. Ważna jest również data delegowania - wiele lat temu StackOverflow był miejscem, w którym osoba z zewnątrz mogłaby korzystać z głębokich zasobów wiedzy na tak szerokie tematy. Zgadzam się, że SO nie jest substytutem ankiety z literatury, ale "właściwa" ankieta w tym czasie oznaczałaby uzyskanie dostępu (nie trywialnego dla osób bez przynależności uniwersyteckiej!) I przeczytanie ~ 200 artykułów. To zupełnie inna liga interesów i zaangażowania, niż reprezentowana przez mój post. –

+0

To, na co warto odpowiedzieć, nigdy nie było tak właściwe, ponieważ było ono właściwie niemożliwe do udzielenia odpowiedniej odpowiedzi. Spójrz na odpowiedzi, które faktycznie masz.Przez te 3 lata pytanie było otwarte. To ... oczywiście ... jest powodem, dla którego nie jest to opłacalny sposób prowadzenia badań. To nie działa. (I, na ile to jest warte, to co robiłeś, to badania, czy chcesz to nazwać czy coś innego.) –

Odpowiedz

1

O ile mi wiadomo, większość postępów w technikach zbierania śmieci w ostatniej dekadzie była po stronie "praktycznej": znane były algorytmy, ale wykonano pewne znaczne dostrojenie w odniesieniu do systemów wielordzeniowych i zaobserwowanych wzorców użytkowania. Znaczna część tych badań została wykonana przez Sun i IBM w kontekście Javy (uderzające jest to, że większość analiz wzorców użycia przedstawionych w książce Jonesa Linsa dotyczy Lisa i jego pojedynczo powiązanych list, obecnie artykuły mówią o Jawa). Algorytm G1 opracowany przez Sun opiera się na starszych pomysłach, zawartych w książce Jonesa & Lins - ale ludzie z firmy Sun (obecnie Oracle) ciężko pracowali, aby dowiedzieć się, która kombinacja była najbardziej wydajna.

Przeprowadzono również wiele badań dotyczących rozproszonego zbierania śmieci - jak zarządzać GC obiektami danych, które są rozproszone na różnych systemach, w zwykłych trudnych warunkach przetwarzania rozproszonego: sieć jest wolna, węzły mogą nie być równoważne sobie nawzajem , niektóre węzły mogą zawieść. Ogólny wniosek wydaje się, że to nie działa (było o wiele więcej badań niż ustaleń). Wersje limitowane z licznikiem odwołań (dla odwołań do obiektów znajdujących się w innym systemie) zostały zaimplementowane (np. W Java RMI) i wydają się pracować w kontekstach, w których nie ma cyklu odniesień między węzłami.

3

GC Postęp na JVM:

G1 JVM wydaje się przynieść kilka nowych usprawnień na stole (dla JVM conajmniej)

G1 jest „server-style” GC i ma następujące atrybuty: .

Równoległość i współbieżność. G1 ma zaletę równoległości, która obecnie istnieje w sprzęcie komputerowym . Wykorzystuje wszystkie dostępne procesory (rdzenie, sprzętowe wątki ), aby przyspieszyć jego zatrzymanie, gdy wątki Java aplikacji zostaną zatrzymane , aby włączyć GC. Działa również jednocześnie z uruchomionymi wątkami Java , aby zminimalizować operacje na całych stertach podczas zatrzymania świata.

Pokolenie. Podobnie jak inne GC HotSpot , G1 jest pokoleniowy, co oznacza, że ​​ traktuje nowo przydzielone (aka młode) obiekty i obiekty, które przez jakiś czas żyły inaczej (stare). Koncentruje się na zbieraniu śmieci aktywność na młodych obiektach, ponieważ są one możliwe do odzyskania podczas najczęściej odwiedzanych starych obiektów . W przypadku większości aplikacji Java kolekcja pokoleniowa ma znaczną przewagę nad alternatywnymi schematami.

Zagęszczanie. W przeciwieństwie do systemu CMS, G1 wykonuje kompilację sterty w czasie. Zagęszczanie eliminuje potencjalne problemy z fragmentacją , aby zapewnić płynną i spójną, długotrwałą pracę.

Przewidywalność. G1 ma być bardziej przewidywalny niż CMS. To jest w dużej mierze ze względu na wyeliminowanie problemów z fragmentacją , które mogą negatywnie wpływać na zatrzymanie pauzy w czasie razy w CMS.Dodatkowo, G1 ma model przewidywania pauzy , który w wielu sytuacjach pozwala mu często osiągnąć (lub rzadko przekraczać) cel pauzy target.

G1 Link

HotSpot 6 wydaje się mieć liczne garbage collectors można wybierać.

+0

Chciałbym zaznaczyć, że dzisiaj JVM nie jest przeznaczona tylko dla języka Java, ale także dla innych języków programowania, takich jak Scala, Clojure, Python i Ruby. Tak więc ulepszenia GC nie dotykają samej Javy. – bakkal

+0

Równoczesne, generacyjne i kompaktowanie algorytmów zbierania śmieci wszystko wcześniej Jones i Lin. –

0

To jest coś natknąłem się wcześniej i po prostu pamiętał teraz:

FPGA-Aware Garbage Collection w Javie

W tym artykule prezentujemy nową pracę włączeniu modułu HW faktycznie tworzenie i przechowywanie odwołań do obiektów przydzielanych dynamicznie . Od Komponenty HW mogą teraz przechowywać obiekty, , moduł zbierający śmieci Java musi być poinformowany o istnieniu tych odniesień do obiektów , aby móc używać wszystkich obiektów , które są nadal używane.

Link to PDF Paper

Powiązane problemy