Olá... geralmente costumo achar todas as respostar para a programação por ai, e por isso nunca postei aqui... mas um problema está me intrigando...
Tenho um aplicativo de servidor java para conexões sockets.. meu intuito é fazer um jogo online em tempo real, de cartas. Até aí tudo bem...
Agora, fiz uma aplicação para testar exaustivamente novas conexões, para definir o limite de usuários que posso ter no servidor. Porém, o máximo de memória que a aplicação usa é por volta de 7mb, e depois da erro de memória. Mesmo usando "java -Xmx512m", tenho esse erro. Limpei o cache de memória do servidor e mesmo com mais de 512mb livres, não passa dos 7mb...
Uso um servidor VPS, alguém sabe se preciso de uma configuração extra?
E outra: Programei meu servidor para após a primeira conexão finalizar os sockets em 10 segundos caso não haja novas interações... Com isso e mais um delay entre cada nova requisição, acreditei que o programa de "exaustão" do servidor iria rodar infinitamente... porem mesmo limpando todas as referências dos sockets no código a memória continua a crescer.. Não entendo muito do GC, mas isso é esperado para tempos curtos assim ou não estou liberando corretamente a memória?
Aqui o que executa quando é feita a desconexão:conected = null;
progresso = null;
USER_FB = null;
nome = null;
jogadas = null;
user_admin = null;
criador = null;
paraenviar = null;
serviceDisconect.shutdown();
serviceDisconect = null;
try{
//out.writeUTF("disconect");
in.close();
out.close();
socket.close();
socket = null;
in = null;
out = null;
}catch(IOException e){
e.printStackTrace();
}
Desculpem a enxurrada de dúvidas, mas sou daqueles "auto-didatas" que acabou não aprendendo as bases bem...
Abraços!