j2me - heap

Pessoal to fazendo um jogo onde tenho um cliente e um servidor.Fui verificar o consumo de memória pelo emulador e ai blz, o cliente, que não faz muitas operações e verificações, está com ± 47000 bytes, ±800 objetos e nesse ponto o gc executa e fica por ai. o servidor, que é quem faz praticamente todo o trabalho ta um absurdo, enquanto tem espaço no heap ele vai colocando coisa, coloquei 500kb de heap e ele usou tudo, e foi a quase 20 mil objetos, totalmente sem noção.
Um dos pontos que está com um consumo grande é nos métodos abaixo, eles são praticamente acionados a cada interação do loop do jogo.

[code] 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()[/code]

Como que eu posso fazer pra diminuir a quantidade de objetos criados? Tentei forcar a chamada do gc mas não adianta, e nem sei se daria muito certo porque ia perder desempenho que é algo que o jogo precisa.
Quando eu chamo o gc pelo monitor do wtk ele cai a praticamente a mesma quantidade de memoria e objetos sendo usados do cliente. :???:

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…