Tamanho da memória

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

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.

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

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.