Metrici de performanță și măsurare

Optimizarea codului în Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Dincolo de măsurarea timpului

  • Videoclipuri anterioare
    • Măsurarea timpului operațiunilor
    • Gestionarea memoriei în JVM
  • Dincolo de măsurarea timpului
  • Metrici de memorie
  • Metrici de utilizare a CPU
Optimizarea codului în Java

Metrici de memorie cu 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
  • Toate returnează numere de tip long reprezentând octeți
Optimizarea codului în Java

Înțelegerea metricilor de memorie

  • maxMemory(): Memoria maximă pe care JVM încearcă să o utilizeze (setată prin -Xmx)
  • totalMemory(): Memoria alocată curent pentru JVM
  • freeMemory(): Memoria neutilizată
  • usedMemory(): totalMemory - freeMemory
  • JVM poate crește totalMemory până la maxMemory după necesitate
Optimizarea codului în Java

Metrici de memorie în practică

// 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
Optimizarea codului în Java

Măsurarea utilizării 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()); }
Optimizarea codului în Java

Instrumente de profilare Java

  • JVisualVM: Interfață vizuală pentru monitorizarea memoriei, CPU și altele
  • jmap: Instrument de analiză a memoriei în linia de comandă
  • Aceste instrumente depășesc metricile simple discutate!
Optimizarea codului în Java

Să exersăm!

Optimizarea codului în Java

Preparing Video For Download...