Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีตรวจสอบหน่วยความจำที่โปรแกรม Java ใช้งาน


สำหรับโค้ด Java ที่ รันนาน (long-running) และใช้หน่วยความจำไดนามิกมาก อาจเกิด Out-Of-Memory errors จากพื้นที่ heap ไม่พอ

ในโปรแกรมนี้ เราทดสอบ free java heap space ที่โปรแกรมใช้ หาก heap ใช้ มากกว่า 90% จะเรียก garbage collector อย่างชัดเจน (explicitly) เมธอด System.gc() จะบล็อกเธรดที่เรียกจน GC เสร็จ ดังนั้นควรรันในเธรดแยก

ตัวอย่าง

public class GCTest {
    public void runGC() {
        Runtime runtime = Runtime.getRuntime();
        long memoryMax = runtime.maxMemory();
        long memoryUsed = runtime.totalMemory() - runtime.freeMemory();
        double memoryUsedPercent = (memoryUsed * 100.0) / memoryMax;
        System.out.println("memoryUsedPercent: " + memoryUsedPercent);
        if (memoryUsedPercent > 90.0)
            System.gc();
    }

    public static void main(String args[]) {
        GCTest test = new GCTest();
        test.runGC();
    }
}

ผลลัพธ์

memoryUsedPercent: 0.07187129404943532