Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Odśmiecanie Grzegorz Timoszuk gt219709@students.mimuw.edu.pl
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!!!
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.