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