Kod: JVA-076
Czas trwania: 40 godzin
Czas trwania: 40 godzin
Opis szkolenia
Celem szkolenia jest omówienie różnych metod profilowania, znajdowania wąskich gardeł, strojenia maszyny wirtualnej, ustawiania flag JVM, serializacji i bibliotek buforujących. Omówione zostanie także przechowywanie danych poza stertą, wykonywanie analiz porównawczych, monitorowanie i strojenie pamięci oraz wiele innych tematów.Plan szkolenia
• Omówienie tuningu wydajności o Powszechnie stosowane praktyki o Strategie dostrajania o Metryki wydajności (opóźnienie, przepustowość, szerokość pasma) o Jak poprawić wydajność o Narzędzia do pomiaru wydajności o JMeter o Tworzenie testów obciążeniowych opartych na JMeter o Jak poprawić wydajność poprzez architekturę o Najlepsze praktyki powszechnie stosowane do poprawy wydajności kodu • Algorytmy GC o Wykorzystanie pamięci przez obiekty Javy o Wspólne metody i algorytmy garbage collectorów (GC) o Szeregowy GC o Równoległy GC o Kolektor CMS o Kolektor G1 o Kolektor Shenandoah o Dostrajanie garbage collectorów o Narzędzia do zbierania metryk odśmiecania o Jak wybrać optymalny garbage collector • Kompilator HotSpot JIT o Kompilacja JIT o Kod bajtowy Javy o Kompilacja warstwowa o Pamięć podręczna i dostrajanie kodu o Optymalizacje kodu o Deoptymalizacja kodu (i kiedy następuje) o Narzędzie JITWatch do analizy wyników kompilacji o Rodzaje optymalizacji o Optymalizacje spekulacyjne o Dostrajanie kompilatora o Kompilacja AOT • Flagi JVM o Przeznaczenie i kategorie flag JVM o Wspólne flagi o Flagi związane z ciągami znaków o Flagi zarządzania pamięcią o Punkty bezpieczeństwa i powiązane flagi o TLAB i związane z nimi flagi o Plan dostrajania JVM • Benchmarking Javy z użyciem JMH o Czym jest benchmarking? o Wprowadzenie do JMH o API JMH o Niebanalne przykłady o Ćwiczenia z JMH • Używanie pamięci poza stertą o Czym jest sun.misc.Unsafe? o Metody Unsafe o Wydajność pamięci natywnej o Tworzenie struktur danych w pamięci natywnej o Pomiary wydajności pamięci natywnej (i porównanie z pamięcią na stercie) o API dostępu do pozostałej pamięci poza stertą • Serializacja o Serializatory JSON (GSON, Jackson) o Serializatory binarne (Protobuf, Jackson Smile, Kryo, FST, One NIO) o Porównanie wydajności różnych serializatorów • Profilowanie Javy o Kiedy i jak wykonywać profilowanie o Profilery próbkowania i instrumentacji o Używanie Java VisualVM do profilowania o Profilowanie przy użyciu Spring AOP o Profilowanie przy użyciu IDEA i profilera async o Java Flight Recorder o Analiza logów Java Flight Recorder przy użyciu Mission Control o Tworzenie i logowanie niestandardowych zdarzeń JFR o Stosowanie agentów Java wstrzykiwanych do kodu (w celu rejestrowania zdarzeń w Java Flight Recorder) o Pisanie programów do automatycznej analizy logów JFR o Zbieranie i analizowanie zapytań SQL przy użyciu JFR o Zbieranie i analizowanie zapytań REST przy użyciu JFR • Monitorowanie i analiza danych sterty / Przecieki pamięci o Narzędzia do analizy danych sterty o Objawy przecieków pamięci o Główne przyczyny przecieków pamięci o Wyszukiwanie i wykrywanie przecieków pamięci • GraalVM o Ekosystem GraalVM o Środowiska uruchomieniowe GraalVM o Polyglot API o Kompilacja i natywny obraz o Benchmarki • Buforowanie w Javie o Wzorce buforowania o Porównanie API do buforowania o Buforowanie zapytań do bazy danych o Buforowanie HTTP o Podstawowe metryki i ustawienia bibliotek buforujących o Porównanie popularnych bibliotek buforujących o Buforowanie na poziomie usług o Buforowanie usług Springa o Aplikacje wykorzystujące buforowanie na różnych warstwach • Omówienie innych metod poprawy wydajności o Programowanie równoległe (pule wątków, strumienie równoległe, framework fork-join) o Programowanie asynchroniczne o Programowanie reaktywne (Reactor, VertX) o Optymalizacja dostępu do bazy danych o Przetwarzanie w chmurze (mikroserwisy, Spring Cloud) o Benchmarki i wnioskiCele
- Wprowadzenie do nowoczesnych metod poprawy wydajności aplikacji w Javie
Grupa docelowa
- Programiści Java
- Architekci Java