Olá pessoal.
Pretendo criar um aplicativo que usa muita memória (no mínimo 200 MB)
e tenho um micro com windows XP com 496 MB de memória RAM.
Perguntas:
1)Porque a classe abaixo informa que tenho “apenas” 1.871.320 bytes de memória livre no final da execução, que equivalem a 1,87 MB?
2)Porque a classe abaixo informa também 1.871.320 bytes, mesmo estando rodando simultâneamente outra classe em java que carrega um vetor de strings gigante em memória?
Observação:
Não sei se isto ajuda, mas quando digito mem do DOS, recebo:
655360 bytes de memória convencional (só isso?!)
655360 bytes disponíveis para o MS-DOS
591984 tamanho do maior programa executável
Obrigado,
Evandro
import java.util.*;
class GarbageExample {
private static MeuVetor vetor;
public static void main(String args[]) {
vetor = new MeuVetor();
for (int a=0; a <500; a++)
vetor.addElement(new StringBuffer(“teste”));
Runtime rt = Runtime.getRuntime();
System.out.println("Memória Livre: " + rt.freeMemory());
vetor = null; // deixa os 500 StringBuffers sem referência
System.gc();
System.out.println("Memória Livre: " + rt.freeMemory());
}
}
class MeuVetor extends Vector {
public void finalize() {
System.out.println(“Vou ser coletado!!”);
}
}