สำหรับโค้ด 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