Odśmiecanie

23
Odśmiecanie Grzegorz Timoszuk [email protected]

description

Odśmiecanie. Grzegorz Timoszuk [email protected]. Wstęp do GC. Pierwsze prace już w latach 60 i 70 Co to jest GC tak naprawdę? Typowe podejście do GC Czemu warto wiedzieć więcej o GC. Gdzie używa się GC a gdzie nie. Używa się: Optymalizacja czasu alokacji i zwalniania - PowerPoint PPT Presentation

Transcript of Odśmiecanie

Page 1: Odśmiecanie

Odśmiecanie

Grzegorz Timoszuk

[email protected]

Page 2: Odśmiecanie

Wstęp do GC

Pierwsze prace już w latach 60 i 70

Co to jest GC tak naprawdę?

Typowe podejście do GC

Czemu warto wiedzieć więcej o GC

Page 3: Odśmiecanie

Gdzie używa się GC a gdzie nie

Używa się: Optymalizacja czasu alokacji i zwalniania Wygoda programistów

Nie używa się: Pełna kontrola na pamięcią (np. jądro Linuxa) Systemy czasu rzeczywistego Systemy wbudowane

Page 4: Odśmiecanie

Języki a odśmiecarki

C/C++ - Boehm GC RUBY Języki funkcyjne - Lisp Języki obiektowe

Smalltalk JAVA

Page 5: Odśmiecanie

Przegląd algorytmów GC

Zaznacz i zamieć 3 kolorowy Zaznacz i zamieć Zaznacz i nie zamiataj Zatrzymaj i kopiuj Zliczanie referencji Odśmiecanie pokoleniowe

Page 6: Odśmiecanie

Zaznacz i zamieć

2 zbiory Przeglądanie całej pamięci i to 2 razy Zatrzymuje system Słabo wydajne

Page 7: Odśmiecanie

3-kolorowa wersja

3 zbiory białe/szare/czarne Biali kandydaci do odśmiecenia Czarne puste/bez referacji do białych

(zostają) Szare – do przetworzenia Coś typu przechodzenie wszerz z

szarych

Page 8: Odśmiecanie

Zaznacz i nie zamiataj

Raz zaczerniony zostaje czarny Biały wolny i może być zwolniony W pewnym momencie wybielanie

wszystkiego i wyszukiwanie używanch I tak w kółko

Page 9: Odśmiecanie

Zliczanie referencji

Struktura referencji – np. graf Typowy problem – cykle Inny problem - uaktualnienia Zasadniczo małe wydajne Np. Python

Page 10: Odśmiecanie

Zatrzymaj i kopiuj

2 przestrzenie „z” i „do” Zużywa 2 razy więcej pamięci niż

potrzeba Działanie podobne do przechodzenia

w głąb Proste w implementacji Algorytm Cheneya

Page 11: Odśmiecanie

Przenosić czy nie

Problem przenoszenia danych w pamięci podczas działania GC, jak przenosić to: Od razu wiadomo ile jest wolnego Bardzo szybko i wygodnie się tworzy

obiekty Można optymalizować ustawienie

obiektów – np. obiekty często używane po sobie

Page 12: Odśmiecanie

Pokoleniowy GC

Śmiertelność noworodków Podział na generacje Działanie w obrębie generacji i całości

(mały i duży cykl) Podejście heurystyczne

Page 13: Odśmiecanie

Jak to jest w życiu

Nie ma jednego idealnego GC Przykład JAVA

Ma kilka wbudowanych GC do różnych zastosowań

Od JSE 5.0 JVM sam dobiera najlepszy GC do maszyny

Możliwości skalowania

Page 14: Odśmiecanie

GC w Javie

Zakłada się, że większość danych zostanie zwolnione szybko po alokacji

Nawet mały czas działania GC na 1 procesorze potrafi znacznie wydłużać się w przypadku maszyn wieloprocesorowych

Page 15: Odśmiecanie

Struktura pamięci

Page 16: Odśmiecanie

Miary wydajności

Mamy dwie najważniejsze miary wydajności GC

CZAS PROCESORA STRACONY W GC

CZAS PAUZ SYSTEMU

Page 17: Odśmiecanie

Typy GC w Javie

Standardowy – większość aplikacji, najczęściej ustawiany jako domyślny

Równoległy – systemy wieloprocesorowe, minimalizuje czas spędzony w GC i pauzy

Współbieżny – raczej systemy wieloprocesorowe – krótkie pauzy ponad wszystko

Page 18: Odśmiecanie

Równoległy GC w Javie

Page 19: Odśmiecanie

Równoległy GC w Javie

Typowy dla maszyn wieloprocesorowych

Od Javy 5.0 update 6 obie fazy mogą być zrównoleglane

Priorytety minimalizacji Maxymalny czas pauz Wydajność (% czasu procesora) Footprint

Page 20: Odśmiecanie

Współbieżny GC

Jesteśmy w stanie tracić wydajność na rzecz krótkich pauz

Da się stosować już od 2 procesorów – tryb przyrostowy

Na GC ok. liczba procesorów/4 w czasie działania

Działa na 2 pauzy, druga pauza dłuższa

Page 21: Odśmiecanie

Współbieżny GC

Tryb przyrostowy Zatrzymaj wątki, znajdź osiągalne z korzenia Stwórz graf osiągalnych Jeszcze raz przejdź graf, poszukiwanie zmian z

ostatniej chwili Zatrzymaj i sprawdź wszystkie zmiany i

uaktualnij dane Współbieżnie wymieć nieużywane Przygotuj się do następnej fazy

Page 22: Odśmiecanie

Źródła

Prezentacja zrobiona w oparciu o szeroko pojęty Internet: Wikipedię (http://wikipedia.org) Dokumentację techniczną do Javy, jest to

również źródło grafik prezentacji (http://java.sun.com)

Wesołe obrazki z pakietu MS Office

Page 23: Odśmiecanie

PYTANIA??

DYSKUSJA!!!