Métricas y medición del rendimiento

Optimizing Code in Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Más allá de medir el tiempo

  • Vídeos anteriores
    • Medir el tiempo de las operaciones
    • Gestión de memoria en la JVM
  • Más allá de medir el tiempo
  • Métricas de memoria
  • Métricas de uso de CPU
Optimizing Code in Java

Métricas de memoria con 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 devuelven números long que representan bytes
Optimizing Code in Java

Entender las métricas de memoria

  • maxMemory(): Memoria máxima que la JVM intentará usar (definida con -Xmx)
  • totalMemory(): Memoria asignada actualmente a la JVM
  • freeMemory(): Memoria sin usar
  • usedMemory(): totalMemory - freeMemory
  • La JVM puede aumentar totalMemory hasta maxMemory según sea necesario
Optimizing Code in Java

Métricas de memoria en la práctica

// 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");
Memoria usada: 5.23 MB
Optimizing Code in Java

Medición del 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()); }
Optimizing Code in Java

Herramientas de perfilado en Java

  • JVisualVM: Interfaz visual para monitorizar memoria, CPU y más
  • jmap: Herramienta de análisis de memoria en la línea de comandos
  • ¡Estas herramientas van más allá de las métricas básicas que vimos!
Optimizing Code in Java

¡Vamos a practicar!

Optimizing Code in Java

Preparing Video For Download...