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:
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));
}
}
Saida:
Memoria heap
Usado: 281(281.30kb)
Usado: 378(378.59kb)
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.