Ae pessoal, tenho a seguinte situação:
Um código Java meu fica esperando em um socket por mensagens XML vindas de um Hardwre com C.
Bem, esse meu socket está consumindo muitos recursos; mesmo que eu resete todos os recuros que eu utilizei. Gostaria da opnião de vocês quanto ao design do código, e se está tecnicamente correto:
try {
ServerSocket serverSocket = new ServerSocket(30204);
Socket connection = null;
StringBuffer conteudo = new StringBuffer();
int character;
while (true) {
try {
System.out.println("#Log: esperando mensagens no Socket: " + serverSocket.getLocalSocketAddress());
connection = serverSocket.accept();
BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
InputStreamReader isr = new InputStreamReader(is);
while ((character = isr.read()) != 13) {
conteudo.append((char) character);
}
System.out.println("Memória disponível: " + (Runtime.getRuntime().freeMemory() / 1000 ));
logarMensagem(conteudo.toString());
conteudo.delete(0, conteudo.length());
isr.close();
is.close();
connection.close();
//System.out.println();
} catch (Exception ex) {
System.out.println("#Log: Recebeu uma mensagem do RSControle e ecorreu um erro: \n" + conteudo);
//TODO: Tratar a exception e persistir.
}
}
Eu estou monitorando o consumo de memória pelo método Runtime.getRuntime().freeMemory(), não sei se é uma maneira descente de fazer isso - é apenas para teste.
Gostaria de saber se estou usando as classes certas.
Desde já, obrigado!