성능 지표와 측정

Java 코드 최적화

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

시간 측정을 넘어서

  • 이전 영상
    • 작업 소요 시간 측정
    • JVM의 메모리 관리
  • 시간 측정을 넘어서
  • 메모리 지표
  • CPU 사용률 지표
Java 코드 최적화

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
  • 모두 바이트 단위의 long 숫자를 반환합니다
Java 코드 최적화

메모리 지표 이해하기

  • maxMemory(): JVM이 사용하려는 최대 메모리(-Xmx로 설정)
  • totalMemory(): 현재 JVM에 할당된 메모리
  • freeMemory(): 사용되지 않는 메모리
  • usedMemory(): totalMemory - freeMemory
  • JVM은 필요에 따라 totalMemory를 maxMemory까지 늘릴 수 있습니다
Java 코드 최적화

실전 메모리 지표

// 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
Java 코드 최적화

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()); }
Java 코드 최적화

Java 프로파일링 도구

  • JVisualVM: 메모리, CPU 등을 모니터링하는 시각적 인터페이스
  • jmap: 명령줄 메모리 분석 도구
  • 이 도구들은 지금까지 살펴본 간단한 지표를 넘어섭니다!
Java 코드 최적화

연습해 봅시다!

Java 코드 최적화

Preparing Video For Download...