Métricas e medição de performance

Otimização de Código em Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Além das medições de tempo

  • Vídeos anteriores
    • Medir o tempo de operações
    • Gerenciamento de memória na JVM
  • Indo além das medições de tempo
  • Métricas de memória
  • Métricas de uso de CPU
Otimização de Código em Java

Métricas de memória com Runtime

// Get the Runtime instance
Runtime runtime = Runtime.getRuntime();


// Memory metrics in bytes long totalMemory = runtime.totalMemory(); // Memory currently allocated long freeMemory = runtime.freeMemory(); // Memory that is unused long maxMemory = runtime.maxMemory(); // Maximum memory JVM will attempt to use
  • Todos retornam números long representando bytes
Otimização de Código em Java

Entendendo as métricas de memória

  • maxMemory(): Memória máxima que a JVM tentará usar (definida por -Xmx)
  • totalMemory(): Memória atualmente alocada para a JVM
  • freeMemory(): Memória não utilizada
  • usedMemory(): totalMemory - freeMemory
  • A JVM pode aumentar totalMemory até maxMemory conforme necessário
Otimização de Código em Java

Métricas de memória na prática

// Create a utility method for readable memory values
public static double getUsedMemoryMB() {
    Runtime runtime = Runtime.getRuntime();
    long memory = runtime.totalMemory() - runtime.freeMemory();
    return memory / (1024.0 * 1024.0);  // Convert to MB
}

// After allocation
System.out.println("Memory used: " + getUsedMemoryMB() + " MB");
Memory used: 5.23 MB
Otimização de Código em Java

Medição de uso de CPU

import java.lang.management.*;

ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();

// Check if CPU time measurement is supported if (threadMXBean.isThreadCpuTimeSupported()) { // Enable CPU time measurement threadMXBean.setThreadCpuTimeEnabled(true); // Get CPU time in nanoseconds long cpuTimeNs = threadMXBean.getThreadCpuTime(Thread.currentThread().threadId()); }
Otimização de Código em Java

Ferramentas de profiling em Java

  • JVisualVM: Interface visual para monitorar memória, CPU e mais
  • jmap: Ferramenta de análise de memória em linha de comando
  • Essas ferramentas vão além das métricas simples que vimos!
Otimização de Código em Java

Vamos praticar!

Otimização de Código em Java

Preparing Video For Download...