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
Pre-JCP-filed draft for JavaServer Faces 2.0 JSR
Ainda existe vida para o JSF
Aos incrédulos quanto a continuidade do JSF, cá está o pre-draft do JSF 2.0 , muitas coisas interessantes... a total aniquilação do faces-config.xml (config per exception) uso de templates, FINALMENTE voce vai poder deixar no seu bookmark uma URL de um sistema feito em faces hehehe, uso de AJAX diretamente no CORE e hotdeployment de componentes... , baixe e de uma conferida...
O legal de voce estar dentro de padroes especificados pela JCP é que normalmente eles tem uma certa atualização... e sempre baseando-se no mercado , alguns podem dizer que demora muuuuuito... e eu concordo... demora pra kct... MAS se for pensar na quantidade de dinheiro que vai ser investido em cima de uma JSR (vide Java EE 5) , é de se pensar se esse "tempo todo" chega a ser uma aliado... garantido compatibilidade retroativa (na maioria dos casos) e sempre focando no que existe de melhor no mercado, tem nego falando em Java EE 6... isso deve fazer empresas maiores tremerem na base.... imagina... nem saiu direito o 5 já vem o 6 ? tá parecendo o .Net... que fez um estardalhaço no 2.0 e no 3.0 ninguem nao tah nem ae.... é muito pouco tempo para absorver uma tecnologia... utiliza-la e fazer com que ela cumpra o retorno prometido...
Outra coisa que tenho visto... que a JCP vem sendo bastante COPIONA.... ela tah adorando copiar frameworks do mercado e "padroniza-los"... eu por enquanto tenho achado isso muito bom... espero que ela sempre se espelhe em frameworks bons... quem nao se lembra da briga "Hibernate vs JDO" na JCP ? hehehe...
O legal de voce estar dentro de padroes especificados pela JCP é que normalmente eles tem uma certa atualização... e sempre baseando-se no mercado , alguns podem dizer que demora muuuuuito... e eu concordo... demora pra kct... MAS se for pensar na quantidade de dinheiro que vai ser investido em cima de uma JSR (vide Java EE 5) , é de se pensar se esse "tempo todo" chega a ser uma aliado... garantido compatibilidade retroativa (na maioria dos casos) e sempre focando no que existe de melhor no mercado, tem nego falando em Java EE 6... isso deve fazer empresas maiores tremerem na base.... imagina... nem saiu direito o 5 já vem o 6 ? tá parecendo o .Net... que fez um estardalhaço no 2.0 e no 3.0 ninguem nao tah nem ae.... é muito pouco tempo para absorver uma tecnologia... utiliza-la e fazer com que ela cumpra o retorno prometido...
Outra coisa que tenho visto... que a JCP vem sendo bastante COPIONA.... ela tah adorando copiar frameworks do mercado e "padroniza-los"... eu por enquanto tenho achado isso muito bom... espero que ela sempre se espelhe em frameworks bons... quem nao se lembra da briga "Hibernate vs JDO" na JCP ? hehehe...