public String readDataClient() {
byte[] data = new byte[512];
try {
int len = con.receive(data);
String msg = new String(data, 0, len);
return msg;
}
catch (Exception e)
{ System.out.println("readData(): " + e);
return null;
}
} // end of readData()
public String[] readDataServer() {
byte[] data = new byte[512];
try {
int len = con.receive(data);
String msg = new String(data, 0, len);
String[] msgReturn= split(msg,"|");
return msgReturn;
}
catch (Exception e)
{ System.out.println("readData(): " + e);
return null;
}
} // end of readData()
public boolean sendMessage(String msg){
byte[] msgBytes = msg.getBytes();
if (msgBytes.length > 512) {
System.out.println("Message too long, sending \"??\" instead");
msgBytes = "??".getBytes();
}
try {
con.send(msgBytes);
return true;
}
catch (Exception e)
{ System.out.println("sendMessage(): " + e);
return false;
}
} // end of sendMessage()
j2me - heap
3 Respostas
Chame o GC e de um pequeno sleep. (Dando assim chance para que o GC atue!)
Valeu Clovis, vou dar uma limpada no código e fazer isso que você disse!
Obrigado!
Passo pela mesma situação…
Depois de quebrar a cabeça com a aplicação em um Nokia 6100, suspeitei que o problema seja alocação de recursos na transmissão. Meu problema é o seguinte, se chamo até 2x a conexão à internet ocorre de boa…mas a 3a raramente e nunca passa daí. No emulador, limitei a memória para algo parecido com o aparelho… 64Kb…e para minha surpresa recebia um OutOfMemory exception no mesmo ponto, ao chamar a classe de transmissão…
Já fiz de tudo, passei para static reduzi variáveis, reutilizei componentes, e mesmo com 40k de memória livre, recebo o OutOfMemory no mesmo ponto… :roll:
Uma solução que pensei seria quebrar a aplicação em vários MidLets, mas isso quebraria a seqüência lógica do programa…se for o ultimo caso terei q fazer…
alguma dica?
estou usando para conexão o Connector aliao ao InputStreamReader…