1. Crie uma instância de uma classe sem usar a nova palavra-chave
Quando você cria uma instância de uma classe usando a palavra-chave new, todos os construtores na cadeia de construtores são chamados automaticamente. Mas se um objeto implementa a interface Cloneable, podemos chamar seu método clone(). O método clone() não chama nenhum construtor de classe. Se você criar um objeto usando o padrão Factory, é muito simples usar o método clone() para criar uma nova instância de objeto.
2. Não inicialize variáveis repetidamente
Por padrão, Java inicializa variáveis com determinados valores quando o construtor de uma classe é chamado. Isso deve ser observado especialmente quando uma classe é derivada de outra classe, porque quando um objeto é criado usando a palavra-chave new, todos os construtores na cadeia de construtores serão chamados automaticamente.
3. Use exceções com cautela
Exceções são ruins para o desempenho. Lançar uma exceção primeiro cria um novo objeto. O construtor da interface Throwable chama o método nativo denominado fillInStackTrace(). O método fillInStackTrace() verifica a pilha e coleta informações de rastreamento de chamadas. Sempre que uma exceção é lançada, a jVM precisa ajustar a pilha de chamadas porque um novo objeto é criado durante o processamento. As exceções devem ser usadas apenas para tratamento de erros e não devem ser usadas para controlar o fluxo do programa.
Preste atenção aos dois pontos a seguir. (1) Evite usar try/catch para lógica de aplicativo. Se puder ser processado com instruções lógicas como if e while, tente não usar instruções try/catch tanto quanto possível; , reutilize objetos de exceção existentes tanto quanto possível. Porque no tratamento de exceções, gerar um objeto de exceção consome a maior parte do tempo.
4. Tópico
Threads podem fazer uso total dos recursos do sistema. Enquanto outros threads aguardam leitura e gravação no disco rígido ou na rede, o programa pode continuar a processar e executar. No entanto, o uso indevido de threads também afetará o desempenho do programa. Exemplo: Use a classe Vector corretamente. Vector é usado principalmente para salvar vários tipos de objetos (incluindo objetos do mesmo tipo e de tipos diferentes). Vector fornece funções de proteção de segurança de thread. Mesmo que muitos métodos da classe Vector estejam sincronizados. Mas se você confirmou que seu aplicativo é de thread único, a sincronização desses métodos é completamente desnecessária. Além disso, ao pesquisar vários objetos armazenados no Vector, muitas vezes leva muito tempo para combinar os tipos. Quando esses objetos são todos do mesmo tipo, essas correspondências são completamente desnecessárias. Portanto, é necessário projetar uma classe ou coleção de thread único que salve objetos de um tipo específico para substituir a classe Vector.
Em relação às operações de thread, observe: (1) Evite sincronização excessiva. Se o programa for de thread único, certifique-se de não usar a sincronização. (2) Sincronizar métodos em vez de sincronizar todo o segmento de código. Sincronizar um método tem melhor desempenho do que sincronizar todo o segmento de código.
5. Tente usar variáveis locais
Os parâmetros passados na chamada do método e as variáveis temporárias criadas durante a chamada são salvas na pilha (Stack), que é mais rápida.
6. Use variáveis estáticas tanto quanto possível
Deixe todas as instâncias compartilharem esta variável.
7. Tente especificar o modificador final da classe
As classes com o modificador final não são derivadas. java.lang.String, especificar final para a classe String evita que as pessoas substituam o método length(). Além disso, se uma classe for designada como final, todos os métodos da classe serão finais. O compilador Java procurará oportunidades para incorporar todos os métodos finais, o que pode melhorar o desempenho em uma média de 50%.
8. Criação de objetos e alocação de espaço e tamanho razoáveis para ele
Um grande número de objetos (ou instâncias) é frequentemente gerado na programação JAVA. Como o sistema não apenas leva tempo para gerar objetos, também pode levar algum tempo para coletar o lixo e processar esses objetos posteriormente. Portanto, gerar muitos objetos terá um grande impacto no desempenho do programa. Além disso, muitas classes em JAVA possuem seus tamanhos de alocação de espaço padrão; Para a classe StringBuffer, o tamanho do espaço alocado padrão é 16 caracteres. Se o tamanho do espaço do StringBuffer usado no programa não for 16 caracteres, então a inicialização correta deverá ser realizada.
9. Use E/S sem bloqueio
Versões inferiores do JDK não suportam API de E/S sem bloqueio. Para evitar o bloqueio de E/S, alguns aplicativos criam um grande número de threads (em melhores casos, um buffer pool é usado). Essa técnica pode ser vista em muitas aplicações que devem suportar fluxos de E/S simultâneos, como servidores Web. O JDK 1.4 introduziu uma biblioteca de E/S sem bloqueio (java.nio).
Este artigo vem do blog CSDN. Indique a fonte ao reimprimir: http://blog.csdn.net/Foxalien/archive/2009/12/18/5029659.aspx.