การติดตามการใช้หน่วยความจำ
สมมติว่ากำลังพัฒนาแอปพลิเคชันประมวลผลข้อมูลที่จัดการกับ object จำนวนมาก ให้สร้าง utility สำหรับตรวจสอบหน่วยความจำ เพื่อติดตามการใช้งานหน่วยความจำระหว่างการทำงานที่สำคัญ และป้องกันข้อผิดพลาดประเภท OutOfMemoryError
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การปรับแต่งโค้ดใน Java
คำแนะนำการฝึกหัด
- ดึง JVM runtime instance ปัจจุบัน
- ใช้ค่า total memory และ free memory ของ runtime เพื่อคำนวณหน่วยความจำที่กำลังใช้อยู่
- เรียกเมธอดเพื่อดึงค่าหน่วยความจำที่ใช้อยู่ในหน่วยเมกะไบต์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
public class Main {
public static double getUsedMemoryMB() {
// Retrieve the JVM runtime instance
Runtime runtime = ____.____()
// Calculate the current used memory
long usedMemoryBytes = runtime.____() - runtime.____();
return usedMemoryBytes / (1024.0 * 1024.0);
}
public static void main(String[] args) {
double memoryBefore = getUsedMemoryMB();
System.out.println("Memory before array creation: " + memoryBefore + " MB");
int size = 10_000_000;
double[] largeArray = new double[size];
for (int i = 0; i < size; i++) {
largeArray[i] = Math.sqrt(i);
}
// Get the currently used memory in megabytes
double memoryAfter = ____();
System.out.println("Memory after array creation: " + memoryAfter + " MB");
System.out.println("Memory used by array creation: " + (memoryAfter - memoryBefore) + " MB");
}
}