Otimização de Código em Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Gerenciamento manual de memória (C/C++)
$$
Coleta de lixo no Java

Trade-offs de desempenho do GC
$$
Algoritmos de GC
// Ruim - Criar muitos objetos de curta duração for (int i = 0; i < 1000000; i++) { new Object(); // Vira lixo imediatamente }// vs. Reutilizar objetos Object obj; for (int i = 0; i < 1000000; i++) { obj = new Object(); // Apenas uma referência }
// Evite isso em código crítico de desempenho String result = ""; for (int i = 0; i < 100000; i++) { result += i; // Cria uma nova String a cada vez }// Abordagem melhor StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100000; i++) { builder.append(i); // Reutiliza o mesmo buffer } String result = builder.toString();
// Ramificações previsíveis ajudam a otimização do JIT
if (value > 0) {
// Código A - caminho mais frequente
} else {
// Código B - caminho raro
}
Otimização de Código em Java