Performance-metrics en -meting

Code optimaliseren in Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Verder dan tijdsmetingen

  • Vorige video's
    • Tijd per bewerking meten
    • Geheugenbeheer in de JVM
  • Verder dan tijdsmetingen
  • Geheugenmetrics
  • CPU-gebruik metrics
Code optimaliseren in Java

Geheugenmetrics met 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
  • Alles retourneert long-waarden in bytes
Code optimaliseren in Java

Geheugenmetrics begrijpen

  • maxMemory(): Maximale geheugen dat de JVM probeert te gebruiken (via -Xmx)
  • totalMemory(): Momenteel aan de JVM toegewezen geheugen
  • freeMemory(): Ongebruikt geheugen
  • usedMemory(): totalMemory - freeMemory
  • JVM kan totalMemory verhogen tot maxMemory indien nodig
Code optimaliseren in Java

Geheugenmetrics in de praktijk

// 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
Code optimaliseren in Java

CPU-gebruik meten

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()); }
Code optimaliseren in Java

Java-profilerings­tools

  • JVisualVM: Visuele tool voor geheugen-, CPU-monitoring en meer
  • jmap: CLI-tool voor geheugenanalyse
  • Deze tools gaan verder dan de simpele metrics die we bespraken!
Code optimaliseren in Java

Laten we oefenen!

Code optimaliseren in Java

Preparing Video For Download...