เมตริกประสิทธิภาพและการวัดผล

การปรับแต่งโค้ดใน 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

เครื่องมือ profiling สำหรับ Java

  • JVisualVM: อินเทอร์เฟซแบบภาพสำหรับตรวจสอบหน่วยความจำ CPU และอื่นๆ
  • jmap: เครื่องมือวิเคราะห์หน่วยความจำแบบ command-line
  • เครื่องมือเหล่านี้ทำได้มากกว่าเมตริกพื้นฐานที่เราได้เรียนไป
การปรับแต่งโค้ดใน Java

มาฝึกกันเถอะ!

การปรับแต่งโค้ดใน Java

Preparing Video For Download...