"je ve vlastnosti místo Stringu null"

Sice není dvakrát srozumitelné, co tím myslíte (jaká "vlastnost"? java.util.Properties?), ale zdá se mi, že GC je zde falešná stopa... Pokud je nakonec ve "vlastnosti" null, tak bych tipnul, že je to normální reference (nějak dosažitelná Vaším kódem), a pokud tam byl předtím String, tak to nemohl vymazat GC, protože ten nikdy žádné dosažitelné (reachable) reference nemaže... Pokud se ta knihovna konfiguruje pomocí Properties, podstrčte jí takové, které jsou nemodifikovatelné. Tím se snadno najde viník, který nastavuje ono null - až to zkusí, dojde k výjimce a ze stack trace poznáte, kdo to byl.

Roman



Dne 22.9.2011 9:31, Libor Jelinek napsal(a):
Dobrý den,
nene o optimalizaci nejde. Dohledávám podivné chování closed-source
externí knihovny. V rámci jedné své metody si uložím si String objekt
do knihovní instance. Volám další své metody a někdy
po jedné jindy po dvou nebo třech volání je ve vlastnosti místo
Stringu null. Odkaz na knihovní instanci držím jako field po celou
dobu.

Přiznám se, že také příliš nerozumím k čemu a jak použít k tomuto
aspektové programování (pro mě dosud abstraktní pojem). Jediné po čem
skutečně toužím je prostý log co bylo GCed... Zdá se, že to svede jen
JProfiler za 450 EUR.

Libor

Dne 21. září 2011 17:59 "Zdeněk Troníček"<[email protected]>  napsal(a):
Dobrý den,

k čemu to potřebujete? Pokud Vám jde o to, zjistit, kterých objektů je v
paměti nejvíce, doporučuji tento postup: nastavte velikost young generace
tak, aby docházelo pouze k Full GC. Např. pro Java2DDemo funguje -Xmn14M
-Xmx16M.
A použijte přepínač -XX:+HeapDumpBeforeFullGC.
Tím se před každým Full GC provede heap dump do souboru. Tyto soubory lze
pak prohlížet např. ve VisualVM.

Z.T.
--
Zdenek Tronicek
FIT CTU in Prague


Libor Jelinek napsal(a):
Dobrý den,
existuje nějaký způsob jak zjistit jméno třídy objektu, které bylo
"garbage collected" Javou?

Přidání parametrů do (Oracle) JVM
     -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

jen vypisuje vyčištěnou pamět, nikoli co bylo vyčištěno.

Google mi též nepomohl.

Díky
Libor




Odpovedet emailem