Metryki wydajności i ich pomiar

Optymalizacja kodu w Javie

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Poza pomiarami czasu

  • Poprzednie filmy
    • Mierzenie czasu operacji
    • Zarządzanie pamięcią w JVM
  • Wyjście poza pomiary czasu
  • Metryki pamięci
  • Metryki wykorzystania CPU
Optymalizacja kodu w Javie

Metryki pamięci za 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
  • Wszystkie zwracają liczby long reprezentujące bajty
Optymalizacja kodu w Javie

Omówienie metryk pamięci

  • maxMemory(): maksymalna pamięć, jaką JVM podejmie próbę wykorzystać (ustawiana przez -Xmx)
  • totalMemory(): aktualnie przydzielona pamięć dla JVM
  • freeMemory(): nieużywana pamięć
  • usedMemory(): totalMemory - freeMemory
  • JVM może zwiększać totalMemory do wartości maxMemory w razie potrzeby
Optymalizacja kodu w Javie

Metryki pamięci w praktyce

// 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
Optymalizacja kodu w Javie

Pomiar wykorzystania 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()); }
Optymalizacja kodu w Javie

Narzędzia do profilowania Java

  • JVisualVM: graficzny interfejs do monitorowania pamięci, CPU i innych zasobów
  • jmap: narzędzie wiersza poleceń do analizy pamięci
  • Narzędzia te wykraczają poza omówione wcześniej proste metryki!
Optymalizacja kodu w Javie

Ćwiczmy!

Optymalizacja kodu w Javie

Preparing Video For Download...