marcado como public static final String na classe de constantesInt retorno = Numeros.ZERO; onde ZERO esta marcado como public static final int na classe de constantes numericasSe voce tem uma classe muito popular, que e acessada muitas vezes, e dentro dessa classe tem varias variaveis e objetos, sempre que a classe for acessada novos objetos e variaveis sao criados, ocupando mais e mais memoria do servidor. Para evitar isso, crie uma classe para armazenar todas as strings e constantes de sua aplicacao, mas lembre-se de sempre marcar suas constantes com static final, dessa forma as variaveis serao criadas apenas uma vez, e utilizadas por todas as classes da aplicacao, sem que mais memoria seja utilizada.Concatenacao de StringsSempre que e utilizada a concatenacao de Strings, novos enderecos da memoria sao separados para essa tarefa, e esses enderecos so sao liberados quando o metodo ou a classe morre, se o garbage collector fizer seu trabalho assim que o metodo ou classe morrer, dessa forma, para evitar o uso excessivo de memoria, aconselha-se utilizar o StringBuffer para esse trabalho.Exemplo de como nao fazer: String texto = texto1; texto += ; texto += texto2;Exemplo de como se deve fazer, economizando memoria. StringBuffer texto = new StringBuffer(); texto.append(texto1); texto.append( ); texto.append(texto2);No exemplo de como nao fazer, se voce concatenar a string A com a string B, e depois com a string C, e com a string D e assim por diante, voce estara ocupando um largo espaco na memoria, pois a cada concatenacao, uma nova String e criada, para armazenar o resultado da sua soma. O processo e similar ao da copia da lista, explicado anteriormente.Utilizando o StringBuffer, voce gasta apenas o endereco que o StringBuffer ja esta utilizando, nao sendo necessario criar varias outras variaveis de apoio.Comentarios Javadoc e in-lineEssa pratica nao desempenha nenhum papel fundamental na performance do sistema, mas garante uma boa performance dos programadores que estiverem mexendo no codigo, conforme mencionado nas primeiras linhas desse post, pois um metodo complicado que estiver bem comentado sempre sera mais facil de entender, nao precisando perder tempo para descobrir o que um IF, um for, uma variavel ou o proprio metodo esta representando.Os comentarios, podem ser colocados na assinatura do metodo, em forma de javadoc e tambem antes de cada codigo, utilizando comentarios de linha.Saiba mais sobre javadoc aqui.Exemplo:/*** * Nome: Fazer alguma coisa * Proposito: Esse metodo recebe um Objeto devidamente preenchido e verifica se * deve ser gravado completo ou se deve ser feita uma gravacao individual no banco de dados. * @param Objeto, esse objeto precisa que a variavel idade de cada individuo esteja preenchida, * recomenda-se utilizar a validacao na tela, nao deixando chegar nenhum nulo no java **/public void doSomethig(Objeto param) { //Verifica se e para gravar todos ou um de cada vez if(param.getIdade() > ClasseSistema.getXpto()) { ServiceImplQualquer.gravarInformacoes(param); } else { //Grava os objetos um a um, mas precisa que a idade de cada objeto //esteja preenchida, utilizando a validacao da tela for (ObjetoX objetoX : param.getLista()) { ServiceImplQualquer.gravarUmDeCada(objetoX); } }}