Prestandamätvärden och mätning

Optimera kod i Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Bortom tidsmätningar

  • Tidigare videos
    • Mäta tid för operationer
    • Minneshantering i JVM
  • Bortom tidsmätningar
  • Minnesmätvärden
  • CPU-användningsmätvärden
Optimera kod i Java

Minnesmätvärden med 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
  • Alla returnerar long-tal som representerar byte
Optimera kod i Java

Förstå minnesmätvärden

  • maxMemory(): Maximalt minne som JVM försöker använda (sätts med -Xmx)
  • totalMemory(): Aktuellt allokerat minne för JVM
  • freeMemory(): Oanvänt minne
  • usedMemory(): totalMemory - freeMemory
  • JVM kan öka totalMemory upp till maxMemory vid behov
Optimera kod i Java

Minnesmätvärden i praktiken

// 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
Optimera kod i Java

Mätning av CPU-användning

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()); }
Optimera kod i Java

Java-profileringsverktyg

  • JVisualVM: Visuellt gränssnitt för övervakning av minne, CPU och mer
  • jmap: Kommandoradsverktyg för minnesanalys
  • Dessa verktyg går längre än de enkla mätvärden vi har gått igenom!
Optimera kod i Java

Nu kör vi en övning!

Optimera kod i Java

Preparing Video For Download...