Erro estranho na execução de app JME

Eu estava usando o seguinte código numa listagem de registros:

Enumeration clientsE = clients.elements();
Object element = null;
Client client = null;

while (clientsE.hasMoreElements())
  {
   if ((element = clientsE.nextElement()) != null)
     {
      client = (Client) element;

      String razaoSocial = client.getRazaoSocial();
      razaoSocial = razaoSocial.substring(0, 20 - (20 - razaoSocial.length()));
      String nomeFantasia = client.getNomeFantasia();
      nomeFantasia = nomeFantasia.substring(0, 20 - (20 - nomeFantasia.length()));

      String label = client.getID() + "-" + razaoSocial + "-" + nomeFantasia;
      choice.append(label, null);
     }
  }

E sempre quando o MIDP executava esta linha:

String label = c.getID() + "-" + razaoSocial + "-" + nomeFantasia;

O emulador fechava e no prompt era mostrada essa mensagem:

Descobri que era esta linha específica quem estava causando o erro pois fui descomentando linha por linha para ver aonde exatamente a aplicação “travava/fechava”.

Então resolvi usar uma StringBuffer, ficando assim meu código:

Enumeration clientsE = clients.elements();
Object element = null;
Client client = null;
StringBuffer label = null;

while (clientsE.hasMoreElements())
  {
   if ((element = clientsE.nextElement()) != null)
     {
      client = (Client) element;
      label  = new StringBuffer(20);

      String razaoSocial = client.getRazaoSocial();
      String nomeFantasia = client.getNomeFantasia();

      label.append(client.getID());
      label.append("-");
      label.append(razaoSocial.substring(0, 20 - (20 - razaoSocial.length())));
      label.append("-");
      label.append(nomeFantasia.substring(0, 20 - (20 - nomeFantasia.length())));

      choice.append(label.toString(), null);
     }
  }

Agora está funcionando corretamente.

Alguém tem idéia do que estaria causando o erro exatamente? O MIDP realmente faz uma medição de memória para verificar se a aplicação vai rodar no dispositivo? Pois a única explicação que encontrei foi que o MIDP tem memória máxima já configurada, e a criação de muitas String’s estaria causando esse erro (embora o loop que vocês viram acima esteja tendo apenas 2 iterações).