1 / 23

Odśmiecanie

Odśmiecanie. Grzegorz Timoszuk gt219709@students.mimuw.edu.pl. 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

aman
Download Presentation

Odśmiecanie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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

  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) • Dokumentację techniczną do Javy, jest to również źródło grafik prezentacji (http://java.sun.com) • Wesołe obrazki z pakietu MS Office

  23. PYTANIA?? DYSKUSJA!!!

More Related