JVM towarzyszy mi w projektach od prawie 15 lat. Łączą nas dobre chwile i złe wspomnienia, którymi będę się chciał z Wami podzielić. Opowiem o 4 jeźdźcach apokalipsy którzy zamieszkują maszynę wirtualną i od czasu do czas dają znać o swojej obecności. Podstępnie zakradają się do zakamarków waszego systemu operacyjnego, procesorów i obszarów pamięci RAM, powodując że wasza aplikacja na produkcji zachowuje się jak wygłodniałe, acz powolne zombie. Kim są Ci odrażający jeźdźcy? To GC, operacje I/O, wątki i interpretowany bytecode. Postaram się na przykładach pokazać narzędzia dostępne w JDK jak i w Waszym systemie operacyjnym, które pozwolą Wam rozpoznać, z którym z nich macie do czynienia, a także techniki radzenia sobie ze spadkiem wydajności. Prezentacja będzie pokazywać ekstremalne przypadki, które wymagać będą nietypowych technik, jednak wszystko odbędzie się zgodnie z zasadami sztuki, a pokazane rozwiązania oparte będą na API i technikach dostępnym w każdym JDK. Więc o czym tak naprawdę będzie? Usłyszycie słów kilka o "off-heap memory", gdy wszystkie rozsądne techniki optymalizacji GC zawiodły. A także o "non-blocking IO" i "zero-copy buffers", gdy już klasyczne IO zawiodło. Nie obędzie się bez łagodnego wstępu do java.util.concurrent.atomic.* i "lock free programming", gdy już nie radzicie sobie z ilością wątków. A na koniec opowiem o "just-in time compilation" i jak pisać kod, który jest "JIT friendly". To wszystko i więcej o wydajności i optymalizacji JVM, dla Waszej radości i uciechy przyszłych pokoleń.