Odśmiecanie Grzegorz Timoszuk

Slides:



Advertisements
Podobne prezentacje
Prezentacja na temat: Porównanie Windows XP i Windows 7
Advertisements

Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Programowanie obiektowe
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Algorytm Dijkstry (przykład)
Wprowadzenie do C++ Zajęcia 2.
CORBA Łukasz Wnęk.
1 Linux jako system wielozadaniowy i wielodostępny.
Wydajne aplikacje na platformie .NET
Sztuczna Inteligencja 2.1 Metody szukania na ślepo
Ciągi de Bruijna generowanie, własności
Zarządzanie pamięcią: ręczne czy automatyczne
CLR na platformie .NET Tomasz Kostarski.
Platforma .Net i Vs.Net.
Co to jest studium przypadku?
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Wykład nr 6: Planowanie przydziału procesora
Magistrala & mostki PN/PD
Systemy operacyjne Bibliografia:
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Algorytmy grafowe Reprezentacja w pamięci
Autorzy: Łukasz Sztandarski Bartłomiej Granat
Project made by Bartosz Rumiński Kl. III i rok 2007/2008.
Java – programowanie obiektowe
Systemy zarządzania treścią CMS
ZARZĄDZANIE PROCESAMI
Wirusy komputerowe.
Podstawy systemu operacyjnego
Przegląd podstawowych algorytmów
Microsoft PowerPoint Wprowadzenie.
Witold Bołt m.
SANKOM Sp. z o.o Warszawa ul. Popularna 14/3 Program Audytor SDG w wersji 1.0 przeznaczony jest do szybkiego doboru grzejników w budynkach mieszkalnych.
Programowanie obiektowe – zastosowanie języka Java SE
WPROWADZENIE W ŚWIAT OBIEKTÓW
Inicjalizacja i sprzątanie
JAVA.
Style i szablony w Wordzie
Problem sekcji krytycznej
Farseer Physics Engine. Farseer Physics Engine jest silnikiem fizycznym napisanym dla platformy.NET. Został on zainspirowany przez silnik Box2D znany.
Programowanie obiektowe – język C++
SW – Algorytmy sterowania
Microsoft Office Publisher
Systemy zarządzania treścią Wykład 5
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Etapy uruchamiania systemu Pliki konfiguracyjne
Programy wspomagające projektowanie instalacji sanitarnych
W ą t e k (lekki proces) thread.
Michał Gmerek, Krzysztof Słodowicz
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
Nieograniczone źródło informacji
Wprowadzenie do spisów treści j a następnie naciśnij klawisz F5 lub kliknij pozycję Pokaz slajdów > Od początku, aby rozpocząć kurs. Na pasku komunikatów.
Jak stworzyć dyplom w programie Word
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
ŁUKASZ DZWONKOWSKI Modele zwinne i ekstremalne. Podejście tradycyjne
Kurs języka C++ – wykład 4 ( )
Operacje na plikach i folderach
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Formatowanie tabel w Excelu w tym formatowanie warunkowe Prezentację przygotował: Cieplucha Maciej.
Systemy operacyjne W projekcie brali udział Rabiniak Mateusz, Marek Mycek Damian Kostecki, Piotr Dojlido.
Optymalizacja programów Open-Source
Optymalizacja programów Open-Source
Wątki, programowanie współbieżne
Programowanie obiektowe – zastosowanie języka Java SE
Podstawy programowania
Założenia projektowe Javy
Sztuczna Inteligencja Gry i programy oparte na szukaniu
JavaBeans by Paweł Wąsala
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Odśmiecanie Grzegorz Timoszuk

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 Wygoda programistów Nie używa się: Pełna kontrola na pamięcią (np. jądro Linuxa) Systemy czasu rzeczywistego Systemy wbudowane

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

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

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

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

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

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

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

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

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

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

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

Struktura pamięci

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

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

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

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

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

Źródła Prezentacja zrobiona w oparciu o szeroko pojęty Internet: Wikipedię ( Dokumentację techniczną do Javy, jest to również źródło grafik prezentacji ( Wesołe obrazki z pakietu MS Office

PYTANIA?? DYSKUSJA!!!