สำหรับระยะยาว โค้ดจาวาซึ่งใช้หน่วยความจำไดนามิกอย่างหนัก เราอาจจบลงด้วยข้อผิดพลาดหน่วยความจำไม่เพียงพอ เนื่องจากหน่วยความจำไม่เพียงพอของพื้นที่ฮีป
ในโปรแกรมด้านล่าง เราสามารถทดสอบ Java heap space ที่โปรแกรมใช้ฟรีได้ หากมีการใช้พื้นที่ฮีป มากกว่า 90 เปอร์เซ็นต์ จากนั้นตัวรวบรวมขยะจะ เรียกอย่างชัดแจ้ง System.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