Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Odśmiecanie Grzegorz Timoszuk

Podobne prezentacje


Prezentacja na temat: "Odśmiecanie Grzegorz Timoszuk"— Zapis prezentacji:

1 Odśmiecanie Grzegorz Timoszuk

2 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

3 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

4 Języki a odśmiecarki C/C++ - Boehm GC RUBY Języki funkcyjne - Lisp Języki obiektowe Smalltalk JAVA

5 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

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

7 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

8 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

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

10 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

11 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

12 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

13 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

14 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

15 Struktura pamięci

16 Miary wydajności Mamy dwie najważniejsze miary wydajności GC CZAS PROCESORA STRACONY W GC CZAS PAUZ SYSTEMU

17 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

18 Równoległy GC w Javie

19 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

20 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

21 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

22 Źródła Prezentacja zrobiona w oparciu o szeroko pojęty Internet: Wikipedię (http://wikipedia.org)http://wikipedia.org Dokumentację techniczną do Javy, jest to również źródło grafik prezentacji (http://java.sun.com)http://java.sun.com Wesołe obrazki z pakietu MS Office

23 PYTANIA?? DYSKUSJA!!!


Pobierz ppt "Odśmiecanie Grzegorz Timoszuk"

Podobne prezentacje


Reklamy Google