Ja pouzivam rovnez MAT. U bezici aplikace provest heap dump idealne pres
jmap (pripadne nastavit jvm tak, aby vytvorila heapdump pokazde kdyz
dojde pamet (-XX:+<div id=":45" class="ii gt">HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=adresar) a potom analyzovat dump v MATu. <br>
<br>Muze se stat, ze heap se neda v MATu otevrit (server ma vice pameti
nez vyvojarske PC), pak se da MAT pustit z konzole pres prikazovou radku
a umi vygenerovat report do html.<br><br>Honza<br></div><br><br><div class="gmail_quote">2010/5/5 Ondra Medek <span dir="ltr"><<a href="mailto:xmedeko@gmail.com">xmedeko@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Ja mam tez dobre zkusenosti s Eclipse MAT (free): zjisti, objekty<br>
ktere tridy zabiraji nejvice, pak lze funkci "find root to gc" rychle<br>
najit zdroj leaku.<br>
<br>
2010/5/5 Michal Bocek <<a href="mailto:michal.bocek@gmail.com">michal.bocek@gmail.com</a>>:<br>
<div><div></div><div class="h5">> Skuste jprofiler alebo yourkit a porovnat snapshoty. Pripadne nakonfigurovat<br>
> jvm tak aby robil heapdump a ten nasledne analyzovat.<br>
><br>
> Snad som pomohol,<br>
> Michal.<br>
><br>
> 2010/5/5 Lukáš Záruba <<a href="mailto:lukas.zaruba@media-solutions.cz">lukas.zaruba@media-solutions.cz</a>><br>
>><br>
>> Zkus jvisualvm aplikačku z JDK (je ve složce bin), tam jde udělat heap<br>
>> dump a pak se v něm kouknout kolik instancí čeho a v jakém stavu byly.<br>
>> Nejsem si jistý, jak se tohle liší od normálního profilingu z hlediska<br>
>> komunikace s JVM, nicméně už jsem pomocí toho odhalil dost problémů...<br>
>> Použití je poměrně jednoduché, taže myslím, že nepotřebuje další<br>
>> vysvětlení :)<br>
>><br>
>> L.<br>
>><br>
>> ______________________<br>
>> Lukáš Záruba (Lukas Zaruba)<br>
>> Chief Technical Officer<br>
>> MEDIA SOLUTIONS EUROPE<br>
>> Lisabonská 4<br>
>> Praha 9 190 00<br>
>> Czech Republic<br>
>> phone: +420 721 879 363<br>
>><br>
>><br>
>><br>
>> Tomas Hubalek wrote:<br>
>>><br>
>>> Zdar,<br>
>>> mam velice rozsahlou aplikaci v Jave a nekde se mi neuvolnuje pamet.<br>
>>> Statickz analyza kodu by snad ani nebyla mozna v rozumnem case. Nasel jsem<br>
>>> moc pekny tutorial <a href="http://www.javapassion.com/handsonlabs/nbprofilermemory/" target="_blank">http://www.javapassion.com/handsonlabs/nbprofilermemory/</a><br>
>>> bohuzel mi vdycky JVM krachne na<br>
>>> WARNING: [AWT-EventQueue-1] Cant promote a shared lock held by 2<br>
>>> threads!<br>
>>> #<br>
>>> # An unexpected error has been detected by Java Runtime Environment:<br>
>>> #<br>
>>> # Internal Error (sharedRuntime.cpp:886), pid=4752, tid=5992<br>
>>> # Error: guarantee((retry_count++ < 100),"Could not resolve to latest<br>
>>> version of redefined method")<br>
>>> #<br>
>>> # Java VM: Java HotSpot(TM) Client VM (11.0-b16 mixed mode, sharing<br>
>>> windows-x86)<br>
>>> # An error report file with more information is saved as:<br>
>>> #<br>
>>> D:\CurrentProjects\CADET2009\netbeans-modules-suite.2.1\application\target\cadet\hs_err_pid4752.log<br>
>>> #<br>
>>> # If you would like to submit a bug report, please visit:<br>
>>> # <a href="http://java.sun.com/webapps/bugreport/crash.jsp" target="_blank">http://java.sun.com/webapps/bugreport/crash.jsp</a><br>
>>> #<br>
>>> Zkousel jsem to jak na Linuxu, tak na Windowsech, bohuzel porad stejne.<br>
>>> Netusite nekdo, jak to zjistit to same bez profileru? Command line mi<br>
>>> nedela problem.<br>
>>> Tom<br>
><br>
><br>
<br>
<br>
<br>
</div></div>--<br>
<font color="#888888">Ondra Medek<br>
</font></blockquote></div><br>