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ě)