Performance metrics and measurement

Optimizing Code in Java

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Beyond time measurements

  • Previous videos
    • Measure time taken for operations
    • Memory management in the JVM
  • Moving beyond time measurements
  • Memory metrics
  • CPU utilization metrics
Optimizing Code in Java

Memory metrics with 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
  • All return long numbers representing bytes
Optimizing Code in Java

Understanding memory metrics

  • maxMemory(): Maximum memory JVM will attempt to use (set by -Xmx)
  • totalMemory(): Currently allocated memory to the JVM
  • freeMemory(): Unused memory
  • usedMemory(): totalMemory - freeMemory
  • JVM can increase totalMemory up to maxMemory as needed
Optimizing Code in Java

Memory metrics in practice

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

CPU utilization measurement

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

Java profiling tools

  • JVisualVM: Visual interface for monitoring memory, CPU and more
  • jmap: Command-line memory analysis tool
  • These tools go beyond the simple metrics we've discussed!
Optimizing Code in Java

Let's practice!

Optimizing Code in Java

Preparing Video For Download...