Descobrir consumo de memória de objeto

3 respostas
D

Como posso descobrir em tempo de execução o consumo de memória e o consumo do processador de um objeto?

3 Respostas

R

Runtime rt = Runtime.getRuntime();

//vc verifica o quanto de memória total vc tem
system.out.println(rt.totalMemory());

//aqui vc pode criar seu objeto;
Objeto x = new Objeto();

//vc verifica o quanto de memória livre vc tem;
system.out.println(rt.freeMemory());


Creio que isso pode lhe ajudar.

P

Resposta: não tem como saber em java, utilize um profiler.

Rulio, você está retornando a memória disponível apra a JVM, não a consumida. Para saber a consumida você poderia subtrair a memória utilizada deste valos, mas mesmo assim sua solução teria alguma (não muita) eficácia apenas em ambientes com uma thread só. Rodar isso em qualquer aplicação dentro de um servidor ou com interface Swing vai te dar valores compeltamente errados por causa da concorrência.

L

Olá

pcalcado:
Resposta: não tem como saber em java, utilize um profiler.

Rulio, você está retornando a memória disponível apra a JVM, não a consumida. Para saber a consumida você poderia subtrair a memória utilizada deste valos, mas mesmo assim sua solução teria alguma (não muita) eficácia apenas em ambientes com uma thread só. Rodar isso em qualquer aplicação dentro de um servidor ou com interface Swing vai te dar valores compeltamente errados por causa da concorrência.

Perfeito!

Mas quanto ao tamanho de um objeto há alternativas. Fora soluções mais heterodoxas que talvez possam existir usando a java instrumentation API, há 2 modos de se saber o tamanho de objetos:

  1. Quando a gente quer saber o tamanho dos objetos serializados para avaliar o tamanho das mensagens trocadas, o melhor é serializar e ver o tamaninho do arquivo.

  2. Há também aquele antigo e famoso artigo do Java World: Sizeof for Java

[]s
Luca

Criado 15 de setembro de 2006
Ultima resposta 15 de set. de 2006
Respostas 3
Participantes 4