Tamanho da memória

3 respostas
E

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!!);

}

}

3 Respostas

T

Dê uma pesquisada nos parâmetros para alocação de memória para a JVM e não confie na chamada ao Garbage Collector do Java pelo comando System.gc(), isso depende muito da implementação da JVM e pode variar de SO para SO.

E

Por favor, dê uma pista onde encontrar isto.
É algum site da internet?

J

Esse metodo não retorna a quantidade de memoria livre da maquina e sim da JVM, então, depende de quanto memoria foi alocada para a JVM.

ex.:

Memoria total: 512MB
Memoria da JVM: 256MB
Memoria total usada: 200MB
Memoria usada da JVM: 100MB

freeMemory() retorna 156MB

Digite java no console e dê uma olhada nos parametros -Xmx e -Xms da JVM.

Criado 14 de outubro de 2006
Ultima resposta 16 de out. de 2006
Respostas 3
Participantes 3