Metriky výkonu a jejich měření

Optimalizace kódu v Javě

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Nad rámec měření času

  • Předchozí videa
    • Měření doby trvání operací
    • Správa paměti v JVM
  • Nad rámec měření času
  • Metriky paměti
  • Metriky využití CPU
Optimalizace kódu v Javě

Metriky paměti pomocí 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
  • Všechny vrací čísla typu long reprezentující bajty
Optimalizace kódu v Javě

Přehled metrik paměti

  • maxMemory(): Maximální paměť, kterou se JVM pokusí použít (nastavena přes -Xmx)
  • totalMemory(): Aktuálně přidělená paměť pro JVM
  • freeMemory(): Nevyužitá paměť
  • usedMemory(): totalMemory - freeMemory
  • JVM může zvýšit totalMemory až na maxMemory dle potřeby
Optimalizace kódu v Javě

Metriky paměti v praxi

// 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
Optimalizace kódu v Javě

Měření využití 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()); }
Optimalizace kódu v Javě

Nástroje pro profilování v Javě

  • JVisualVM: Vizuální rozhraní pro sledování paměti, CPU a dalšího
  • jmap: Nástroj pro analýzu paměti z příkazové řádky
  • Tyto nástroje překračují rámec probíraných metrik!
Optimalizace kódu v Javě

Passons à la pratique !

Optimalizace kódu v Javě

Preparing Video For Download...