Leistungsmetriken und -messung

Codeoptimierung in Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Über Zeitmessungen hinaus

  • Vorherige Videos
    • Zeit für Operationen messen
    • Speicherverwaltung in der JVM
  • Über Zeitmessungen hinaus
  • Speichermetriken
  • CPU-Auslastungsmetriken
Codeoptimierung in Java

Speichermetriken mit 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
  • Alle liefern long-Zahlen in Bytes
Codeoptimierung in Java

Speichermetriken verstehen

  • maxMemory(): Max. Speicher, den die JVM zu nutzen versucht (gesetzt durch -Xmx)
  • totalMemory(): Aktuell der JVM zugewiesener Speicher
  • freeMemory(): Ungenutzter Speicher
  • usedMemory(): totalMemory - freeMemory
  • Die JVM kann totalMemory bei Bedarf bis maxMemory erhöhen
Codeoptimierung in Java

Speichermetriken in der Praxis

// 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
Codeoptimierung in Java

CPU-Auslastung messen

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

Java-Profiling-Tools

  • JVisualVM: Visuelle Oberfläche zum Überwachen von Speicher, CPU u. a.
  • jmap: Kommandozeilen-Tool zur Speicheranalyse
  • Diese Tools gehen über die einfachen Metriken hinaus, die wir besprochen haben!
Codeoptimierung in Java

Lass uns üben!

Codeoptimierung in Java

Preparing Video For Download...