Lista em memorica (ocupação)

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…

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.