Dynamické proxy dokážou být pěkně ošklivé, když
nevíte co se vlastně děje pod pokličkou. Před nějakou
dobou jsem pátral po memory leaku, který působil pád
naší aplikace. Přestože měl Tomcat přiděleno cca 1GB
paměti pro heap a 0,5GB pro PermGenSpace, žil cirka
12 hodin než padnul na OutOfMemory. A to je pěkně
nepříjemná situace, když je aplikace teprve v
betatestu s minimálním přístupem reálných uživatelů.
Analýzou heap dumpu jsem zjistil, že zaplnění
paměti měl na svědomí classloader webové aplikace, ve
kterém bylo několik tisíc CgLibem generovaných
dynamických tříd. Pro analýzu jsem použil Eclipse Memory Analyzer, což je prozatím asi
ten nejlepší nástroj pro analýzu problémů s pamětí,
který jsem kdy použil. Je to už potřetí, co mi pomohl
během chvíle lokalizovat správné problémové místo heuristickou analýzou zvanou Leak suspect.
(Zbytek článku na blogu Myšlenky Otce Fura – článek
je pouze v angličtině)