<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "quantos bytes ocupa o meu objeto na memória?"]]></title>
		<link>http://www.guj.com.br/posts/list/2.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "quantos bytes ocupa o meu objeto na memória?"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ <br /> Tenho um HashMap meio que gigante e gostaria de saber quanto ele está ocupando na memória.<br /> <br /> Buscando no Google achei algumas coisas, e uma solução [url=http://www.javapractices.com/Topic83.cjp]meio esquisita[/url] para fazer o que eu quero.<br /> <br /> Conversei com o Paulo Silveira e ele comentou sobre [url=http://weblogs.java.net/blog/mister__m/archive/2004/02/playing_with_th_1.html]um post no blog do MisterM[/url] mostrando o uso da [url=http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/package-summary.html]java.lang.instrument[/url].<br /> Infelizmente o exemplo dele dá NPE , talvez por eu usar o Mustang e perceber que na versão [url=http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html]6 mudou bastante[/url].<br /> <br /> Alguém tem alguma sugestão ?  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/259995/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/259995/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Tue, 9 Jan 2007 13:57:17]]> GMT</pubDate>
				<author><![CDATA[ boaglio]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ A maneira mais boba de estimar o tamanho do hashmap é serializá-lo, e multiplicar o resultado por 2 se o hashmap contiver principalmente Strings ou objetos de classes cujos campos são principalmente Strings. <br /> É porque uma String é serializada para UTF-8, ou seja, se cada caracter ocupa 2 bytes na memória, ao ser serializada a String ocupa apenas 1 byte.<br /> [code]<br /> Map meuMapaGigante = new HashMap();<br /> meuMapaGigante.put (...);<br /> ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("/teste.bin");<br /> oos.writeObject (meuMapaGigante);<br /> oos.close();<br /> [/code]<br /> <br /> Ou então usar um profiler, que lhe dá a informação correta em vez do tamanho chutado que lhe passei.<br /> Se você estiver usando o Java 5.0 ou 6.0 pode tentar usar o jhat (utilitário que vem junto com o JDK).<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/260068/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/260068/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Tue, 9 Jan 2007 15:18:17]]> GMT</pubDate>
				<author><![CDATA[ thingol]]></author>
			</item>
			<item>
				<title>quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ [quote=boaglio]<br /> Conversei com o Paulo Silveira e ele comentou sobre [url=http://weblogs.java.net/blog/mister__m/archive/2004/02/playing_with_th_1.html]um post no blog do MisterM[/url] mostrando o uso da [url=http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/package-summary.html]java.lang.instrument[/url].<br /> Infelizmente o exemplo dele dá NPE , talvez por eu usar o Mustang e perceber que na versão [url=http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html]6 mudou bastante[/url].[/quote]<br /> <br /> Olá Boaglio,<br /> <br /> O fato do exemplo não funcionar tem pouco a ver com você estar usando o Mustang e sim pelo fato de eu ter usado o JDK 5 beta, que era o único disponível na época em que escrevi o post, e a API ter mudado pro Java SE 5 final. <br /> <br /> Algumas das coisas que mudaram incluem a obrigatoriedade da construção de um jar com o agente, a definição da maioria dos parâmetros que eram passados por comando de linha agora ocorrer como atributos do MANIFEST.MF do jar e outras. Dê uma boa lida na [url=http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html]documentação do package java.lang.instrument[/url] porque todas estas coisas são explicadas lá.<br /> <br /> A única forma mais confiável de calcular o tamanho dos objetos em RAM _talvez seja_ usar a API de debugging do JDK, mas duvido que os resultados entre esta API e o j.l.i variem significativamente.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/260078/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/260078/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Tue, 9 Jan 2007 15:32:54]]> GMT</pubDate>
				<author><![CDATA[ mister__m]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ [quote=thingol]A maneira mais boba de estimar o tamanho do hashmap é serializá-lo...[/quote]<br /> <br /> A diferença entre o tamanho de um objeto serializado e seu tamanho em RAM pode ser brutal devido a diversos fatores. O primeiro e mais óbvio é o formato de serialização e o formato de armazenamento em RAM divergirem, pois o segundo em tese deve ser otimizado para coisas como performance e GC, enquanto o primeiro deveria minimizar o tamanho em disco. Por exemplo, bytes, shorts e ints são armazenados como longs em RAM por algumas VMs, simplesmente porque as operações assembly nativas (e o processo de compilação nativa) acabam sendo mais rápidas se usarem tipos uniformes.<br /> <br /> Outro fator é que a spec de serialização prevê mecanismos que permitem a customização do processo, o que possibilitar tornar ainda mais diferente o formato serializado do que seria o formato em RAM.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/260091/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/260091/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Tue, 9 Jan 2007 15:43:24]]> GMT</pubDate>
				<author><![CDATA[ mister__m]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ Um profiler nao faz isso não? (alem de outras coisas é claro)<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/260359/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/260359/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Tue, 9 Jan 2007 20:04:31]]> GMT</pubDate>
				<author><![CDATA[ felipecruz]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ <br /> Obrigado pelas dicas pessoal.<br /> <br /> Estou procurando um código de exemplo, alguém poderia indicar ?  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/260525/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/260525/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Wed, 10 Jan 2007 11:32:53]]> GMT</pubDate>
				<author><![CDATA[ boaglio]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ [quote=boaglio]<br /> Estou procurando um código de exemplo, alguém poderia indicar ?  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> [/quote]<br /> <br /> Bem, mais explicado que [url=http://weblogs.java.net/blog/mister__m/archive/2007/01/measuring_the_s.html]esse post novo[/url] no java.net não dá pra ser. <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/262123/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/262123/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Fri, 12 Jan 2007 19:05:48]]> GMT</pubDate>
				<author><![CDATA[ mister__m]]></author>
			</item>
			<item>
				<title>quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ Não tenho certeza mas acho q plugin Eclipse Test & Performance Tools Platform (TPTP) tem como ver isso.<br /> <br /> <a class="snap_shots" href="http://www.eclipse.org/tptp/" target="_blank" rel="nofollow">http://www.eclipse.org/tptp/</a>]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/262133/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/262133/quantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Fri, 12 Jan 2007 19:22:33]]> GMT</pubDate>
				<author><![CDATA[ eric_jf]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ Bom dia,<br /> <br /> Você conseguiu descobrir o tamanho em bytes de seu HashMap?<br /> <br /> Vlw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/367943/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/367943/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Mon, 24 Sep 2007 11:20:02]]> GMT</pubDate>
				<author><![CDATA[ leandro_bortolotto]]></author>
			</item>
			<item>
				<title>Re:quantos bytes ocupa o meu objeto na memória?</title>
				<description><![CDATA[ A JDK tem uma série de Tools e utilitários que servem exatamente para esse e os mais variados propósitos. <br /> <br /> Dê uma olhada nesse em especial que é para o seu problema : <a class="snap_shots" href="http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html" target="_blank" rel="nofollow">http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html</a><br /> <br /> Aqui você tem a página que descreve os tools - <a class="snap_shots" href="http://java.sun.com/javase/6/docs/technotes/tools/index.html#troubleshoot" target="_blank" rel="nofollow">http://java.sun.com/javase/6/docs/technotes/tools/index.html#troubleshoot</a><br /> <br /> Para a versão 5 vc tem um outro software - <a class="snap_shots" href="http://oss.metaparadigm.com/jmemprof/" target="_blank" rel="nofollow">http://oss.metaparadigm.com/jmemprof/</a> . <br /> <br /> Vi dois artigos bons sobre o tema, mas não falava especificamente de memória e sim profiler via AOP na IBM - <a class="snap_shots" href="http://www-128.ibm.com/developerworks/java/library/j-aopwork10/" target="_blank" rel="nofollow">http://www-128.ibm.com/developerworks/java/library/j-aopwork10/</a><br /> <br /> <br /> Agora se você quiser fazer automaticamente gerando até gráficos, aconselho a utilizar o NetBeans Profiler que era o JFluid , projeto separado da Sun Microsystems ... excelente ferramenta, já o utilizei em diversos casos  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/49567/367960/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</guid>
				<link>http://www.guj.com.br/prepost/49567/367960/requantos-bytes-ocupa-o-meu-objeto-na-memoria
</link>
				<pubDate><![CDATA[Mon, 24 Sep 2007 12:48:29]]> GMT</pubDate>
				<author><![CDATA[ Kenobi]]></author>
			</item>
	</channel>
</rss>
