Uklízení odpadků a analýza úniku

Podobné dokumenty
Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Správa paměti na platformě Java. Ladislav Thon

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

11. Přehled prog. jazyků

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Struktura programu v době běhu

IUJCE 07/08 Přednáška č. 6

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Správa paměti. Ing. Marek Běhálek katedra informatiky FEI VŠB-TUO A-1018 / marek.behalek@vsb.

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

8 Třídy, objekty, metody, předávání argumentů metod

Profiling v Javě. Základy testování výkonnosti aplikací a hledání problematických míst. Richard Lipka

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Profiling v Javě. Základy testování výkonnosti aplikací a hledání problematických míst. Richard Lipka

TÉMATICKÝ OKRUH Softwarové inženýrství

java remote method invocation Kateřina Fricková, Matouš Jandek

Správa paměti. Ing. Marek Běhálek katedra informatiky FEI VŠB-TUO A-1018 /

Správa paměti. Správa paměti. (c)marek Běhálek, Katedra informatiky FEI VŠB-TU Ostrava 1. Motivace. Úrovně správy paměti. Obsah přednášky.

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Java/QE Akademie - Osnova

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Paralelní programování

Programování a implementace Microsoft SQL Server 2014 databází

Abstraktní datové typy: zásobník

Tvorba informačních systémů

Návrh a vývoj obchodovacích systémů. 29. dubna 2015

Programování v C++ 2, 4. cvičení

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Procesy a vlákna (Processes and Threads)

Jakub Čermák Microsoft Student Partner

1. Programování proti rozhraní

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Předmět: Programování

Jazyk C# (seminář 6)

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

10 Balíčky, grafické znázornění tříd, základy zapozdření

Více o konstruktorech a destruktorech

Informační technologie. Název oboru: Školní rok: jarní i podzimní zkušební období 2017/2018

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Matematika v programovacích

IB111 Úvod do programování skrze Python Přednáška 7

5. STRUKTURA PLC PROGRAMU

Semestrální práce KIV/PC

Datové typy a struktury

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Profilová část maturitní zkoušky 2013/2014

typová konverze typová inference

Profilová část maturitní zkoušky 2017/2018

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Programování II. Návrh programu I 2018/19

Úvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016

Rekurzivní algoritmy

Paralelní programování

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

ČÁST 1. Základy 32bitového programování ve Windows

Algoritmizace a programování

Z. Kotala, P. Toman: Java ( Obsah )

Teoretické minimum z PJV

Informace o předmětu. Úvod. Cíle předmětu. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Lineární datové struktury

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Implementace numerických metod v jazyce C a Python

Organizace předmětu, podmínky pro získání klasifikovaného zápočtu

Základní datové struktury

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

NMIN102 Programování /2 Z, Zk

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

ISU Cvičení 7. Marta Čudová

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Pokročilé architektury počítačů

JVM TOOL INTERFACE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Sdílení dat mezi podprogramy

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Algoritmizace a programování

Anotace. Pointery. Martin Pergel,

Výčtový typ strana 67

2 Postup při programování, úvod do programovacího jazyka Java

O Apache Derby detailněji. Hynek Mlnařík

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Linux Teorie operačních systémů a realita

Maturitní otázky z předmětu PROGRAMOVÁNÍ

PB161 Programování v jazyce C++ Přednáška 5

DUM 06 téma: Tvorba makra pomocí VBA

Transkript:

Uklízení odpadků a analýza úniku Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická Ceské vysoké ucení technické v Praze Prednáška 11 B0B36PJV Programování v JAVA

Uklízení odpadků a analýza úniku Správa paměti Garbage Collection Escape Analysis Příklady GC EA memory leak

JVM a optimalizace výkonu Heap ukládání objektů Garbage Collector úklid heapu JIT kompilace za běhu do nativního kódu Správné nastavení heapu a výběr správného GC má vliv na výkon Většinou ale stačí default nastavení

Správa paměti Heap Společný paměťový prostor Ukládání objektů a dat Spravován GC Stack Dočasný paměťový prostor Lokální proměnné a reference Pro každé volání metody vlastní stack, který je po návratu uvolněn jako celek Příklad z https://www.guru99.com/java-stack-heap.html

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti

Správa paměti Pokaždé, když je volána metoda se rezervuje příslušná část stacku. Jakmile je metoda dokončena, běh programu se vrací a na místo volání a příslušný stack je uvolněn. Proměné v argumentech metody jsou vytvořeny na stacku. Lokální proměné jsou vytvářeny na stacku. Referenční proměnné jsou vytvářeny na stacku. Instanční proměnné jsou vytvářeny na heapu.

Garbage collection Běží automaticky na pozadí Muže být různý v závyslosti na implementaci JVM a nastavení Obecně probíhají fáze: Označení objektů určených k likvidaci

Garbage collection Běží automaticky na pozadí Muže být různý v závyslosti na implementaci JVM a nastavení Obecně probíhají fáze: Označení objektů určených k likvidaci Uvolnění paměti

Garbage collection Běží automaticky na pozadí Muže být různý v závyslosti na implementaci JVM a nastavení Obecně probíhají fáze: Označení objektů určených k likvidaci Uvolnění paměti Zkompaktnění heapu

Garbage collection Běží automaticky na pozadí Muže být různý v závyslosti na implementaci JVM a nastavení Obecně probíhají fáze: Označení objektů určených k likvidaci Uvolnění paměti Zkompaktnění heapu Většina objektů zaniká brzy po vzniku Generační GC

Generační GC Struktura HotSpot heapu Minor garbage collection při zaplnění Young Generation Přeživší jsou přesouvány do Old Generation Major garbage collection při zaplnění Old Generation Full garbage collection kontroluje vše

Generační GC

Generační GC

Generační GC

Generační GC

Generační GC

Generační GC

Generační GC

Generační GC

JVM Garbage Collectors Paralel vs. Seriál Concurent vs. Stop-the-world Concurrent Mark Sweep (CMS) nízká latence, fragmentace Garbage First (G1) Od Java 7 (nyní default) Paralelní, konkurentní, nízká latence Nespojitý prostor

JVM Garbage Collectors Aktivita GC Monitor nebo profiler Výpis na příkazovou řádku -verbose:gc

Escape Analysis Důležitá technika pro JIT Ovlivňuje (ne)alokaci objektů na heapu Odstraňuje zbytečné zámky a synchronizace paměti Stav objektů může být NoEscape objekt není viditelný mimo aktuální metodu a vlákno ArgEscape objekt je viditelný pouze jako argument metody GlobalEscape objekt uniká z metody (návratový argument, statická proměná, apod.) Cílem je udržet objekty nejlépe jako NoEscape aby mohli být optimalizovány

Escape Analysis Zapnutí EA Vypnutí EA -XX:+DoEscapeAnalysis -XX:-DoEscapeAnalysis Defaultně aktivováno pro server HotSpot JVM, zřejmě i 64bit Java 8

EscapeAnalysis.java Bez analýzy velká aktivita GC, runtime 13s, ~90MB S analýzou žádná aktivita GC, runtime 13s, ~12MB Lokální proměnné jsou vytvářeny na stacku

EscapeAnalysis1.java Bez analýzy velká aktivita GC, runtime 14s, ~520MB S analýzou žádná aktivita GC, runtime 5s, ~16MB Výpočetní kód metody je v cyklu inlineován EA identifikuje vytváření instance jako zbytečnou Vylepšení uložením objektů EA nezabere, stvořen memory leak Co kdybychom neukládali výsledek do proměné computation?

Reference http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/ind ex.html https://www.dynatrace.com/news/blog/understanding-g1-garbage-collectorjava-9/ https://www.guru99.com/java-stack-heap.html Příště úterý a pak písemná zkouška