JHat - Analisando a Heap
Você nunca teve aquele problema de Out Of Memory e perguntou-se "Puts... o que tem tanto nessa heap que esta me causando problemas ?" Pois bem... se voce não tiver um bom profiler em mãos... o Java SE 6 vem com um utilitario que faz dump da heap e outro que expoem os objetos dentro dela... é o jmap e o jhat !!! Experimente .....
Carregue seu programa na meoria e descubra qual a PID que ele se encontra rodando...
Use o jmap para gerar um HEAP DUMP:
C:\Arquivos de programas\Java\jdk1.6.0\bin>jmap -dump:format=b,file=heap.bin 2316
Dumping heap to C:\Arquivos de programas\Java\jdk1.6.0\bin\heap.bin ...
Heap dump file created
Depois use o jhat para vizualisar:
C:\Arquivos de programas\Java\jdk1.6.0\bin>jhat heap.bin
Reading from heap.bin...
Dump file created Mon Apr 02 15:07:00 BRT 2007
Snapshot read, resolving...
Resolving 179216 objects...
Chasing references, expect 35 dots...................................
Eliminating duplicate references...................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
Pronto agora é só ir em http://localhost:7000 e fazer a festa ;) muito util ! Existem informações ali do arco da velha... hehehe
Outra coisa bem interessante é que voce pode navegar na heap usando linguagem SQL... um tal de OQL... acesse
http://localhost:7000/oql/
e digite por e:
select s from java.lang.String s where s.count > 100
E vai perceber o poder dessa ferramenta ;) some help ?
Aqui tem mais sobre o OQL
caso voce precise que a JVM faça o dump na hora que ocorrer um OutOffMemory... rode ela com a opcao :
Carregue seu programa na meoria e descubra qual a PID que ele se encontra rodando...
Use o jmap para gerar um HEAP DUMP:
C:\Arquivos de programas\Java\jdk1.6.0\bin>jmap -dump:format=b,file=heap.bin 2316
Dumping heap to C:\Arquivos de programas\Java\jdk1.6.0\bin\heap.bin ...
Heap dump file created
Depois use o jhat para vizualisar:
C:\Arquivos de programas\Java\jdk1.6.0\bin>jhat heap.bin
Reading from heap.bin...
Dump file created Mon Apr 02 15:07:00 BRT 2007
Snapshot read, resolving...
Resolving 179216 objects...
Chasing references, expect 35 dots...................................
Eliminating duplicate references...................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
Pronto agora é só ir em http://localhost:7000 e fazer a festa ;) muito util ! Existem informações ali do arco da velha... hehehe
Outra coisa bem interessante é que voce pode navegar na heap usando linguagem SQL... um tal de OQL... acesse
http://localhost:7000/oql/
e digite por e:
select s from java.lang.String s where s.count > 100
E vai perceber o poder dessa ferramenta ;) some help ?
Aqui tem mais sobre o OQL
caso voce precise que a JVM faça o dump na hora que ocorrer um OutOffMemory... rode ela com a opcao :
-XX:+HeapDumpOnOutOfMemoryError