Category Archives: Java

Kolize hashů pro mírně pokročilé

Hash tabulka je jedna ze základních datových struktur, byla vynalezena roku 1953 a všichni, kdo programování viděli aspoň z rychlíku, ji velice dobře znají. Hash tabulky (někdy také hashmapy nebo slovníky/dicti­onary) umí vyhledat, přidat nebo smazat hodnotu asociovanou s určitým klíčem v konstantním čase. … Continue reading 

Posted in DS, Hashování, Java, PHP | 1 Comment

Jak JVM volá virtuální metody, jaká temná božstva musí vzývat, aby to bylo aspoň trochu rychlé

Aleksey Shipilёv v (ne)dávné době napsal velice obsáhlý článek o volání virtuálních metod v JVM: The Black Magic of (Java) Method Dispatch. Do detailů v něm popsal všechny způsoby, jak lze volat virtuální metody, vysvětlil všechny optimalizace, které JIT javovského virtuálního stroje dělá … Continue reading 

Posted in CPU, Java, JVM, Typy, VM | 1 Comment

JVM: Epizoda V – Paměť vrací úder

Minule jsem psal, jak se podívat objektům pod sukně a přímo přečíst bajty v jejich hlavičkách. Už to samo o sobě jde daleko za hranice virtuálního stroje a narušuje jeho paměťovou bezpečnost. Takže komu se dělalo minule mdlo, by vůbec neměl číst … Continue reading 

Posted in Java, JVM, Paměť, Scala | Leave a comment

JVM – pohled objektům pod sukně

V poslední době jsem hodně psal o paměti a struktuře objektů na JVM. Abych skutečně ověřil, že to tak je, mám na výběr ze dvou možností: studovat zdrojáky JVM nebo zahodit bezpečnost a podívat se přímo na nahé bajty v paměti. Jsem dobrodruh … Continue reading 

Posted in Java, JVM, Paměť, Scala | Leave a comment

Rekurzivní sizeOf pro JVM

Při svém tažení za porozuměním jak JVM pracuje s pamětí jsem si napsal jednoduchý program, který rekurzivně spočítá velikost objektu a všech jeho komponent. Když chci zjistit velikost instance Vectoru obsahujícího 500 elementů, udělám to jednoduše: val vect = scala.collecti­on.immutable.Vec­tor(1 to 500: … Continue reading 

Posted in Java, JVM, Paměť, Scala | 2 Comments