churq
Março 22, 2012, 3:15pm
#1
Olá pessoal!
sou novo no mundo Java! porem estou com uma duvida!
tem como saber o tamanho de uma lista em memoria??
ex: quero saber quanto uma lista minha esta sendo ocupada na memoria!
utilizei o .size porem só me retorna a quantidade de elementos.
vlw pessoal…
jaboot
Março 22, 2012, 4:21pm
#2
Cara, nunca fiz isso. Mas encontrei uma discussão boa no StackOverflow:
Seu Creyson, “memorica”… heheheh
Na revista Mundo Java, acho que nem existe mais de abril de 2009, tem uma matéria excelente a respeito de memória, aliás mostrando young, perm, survivor, tenured, heap, non-heap…
fiz aqui um pedaço de código copiado da mesma:
[code]import static java.lang.System.out;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class TesteMemoria {
public static int KBYTES = 1024;
public static String FORMAT = “(%.2fkb)”;
public static void main(String[] args) {
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
out.println(“Memoria heap”);
out.println();
MemoryUsage heapMemory = memoryBean.getHeapMemoryUsage();
out.println("Usado: "+heapMemory.getUsed()/KBYTES+String.format(Locale.US , FORMAT,(double)heapMemory.getUsed()/KBYTES));
List<String> lista = new ArrayList<String>();
for(int i = 0; i < 2000; i++){
lista.add(new String(“oi”));
}
MemoryUsage heapMemoryNovo = memoryBean.getHeapMemoryUsage();
out.println("Usado: "+heapMemoryNovo.getUsed()/KBYTES+String.format(Locale.US , FORMAT,(double)heapMemoryNovo.getUsed()/KBYTES));
}
}
[/code]
Saida:
[code]Memoria heap
Usado: 281(281.30kb)
Usado: 378(378.59kb)[/code]
Lógico que entre o for e a instancia de outro objeto … , pode haver outras threads… e Deus sabe lá o que acontecendo, mais da para ter uma idéia…
Espero ter ajudado.