Mesures et indicateurs de performance

Optimiser le code en Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Au-delà des mesures de temps

  • Vidéos précédentes
    • Mesurer le temps des opérations
    • Gestion de la mémoire dans la JVM
  • Aller au-delà des mesures de temps
  • Indicateurs de mémoire
  • Indicateurs d'utilisation du CPU
Optimiser le code en Java

Indicateurs de mémoire avec 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
  • Tous renvoient des nombres long représentant des octets
Optimiser le code en Java

Comprendre les indicateurs de mémoire

  • maxMemory(): Mémoire maximale que la JVM tentera d'utiliser (définie par -Xmx)
  • totalMemory(): Mémoire actuellement allouée à la JVM
  • freeMemory(): Mémoire inutilisée
  • usedMemory(): totalMemory - freeMemory
  • La JVM peut augmenter totalMemory jusqu'à maxMemory au besoin
Optimiser le code en Java

Indicateurs de mémoire en pratique

// 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
Optimiser le code en Java

Mesure de l'utilisation du 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()); }
Optimiser le code en Java

Outils de profilage Java

  • JVisualVM : Interface visuelle pour surveiller la mémoire, le CPU, etc.
  • jmap : Outil en ligne de commande pour analyser la mémoire
  • Ces outils vont au-delà des indicateurs simples vus ici !
Optimiser le code en Java

Passons à la pratique !

Optimiser le code en Java

Preparing Video For Download...