Java 코드 최적화
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
// 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 숫자를 반환합니다maxMemory(): JVM이 사용하려는 최대 메모리(-Xmx로 설정)totalMemory(): 현재 JVM에 할당된 메모리freeMemory(): 사용되지 않는 메모리usedMemory(): totalMemory - freeMemorytotalMemory를 maxMemory까지 늘릴 수 있습니다// 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
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 코드 최적화