หน่วยความจำแบบสแตก และฮีป (Stack and Heap Memory)
หน่วยความจำที่ภาษาจาวาเข้าไปใช้งานแบ่งได้ 2 ประเภทคือ หน่วยความจำแบบฮีปและหน่วยความจำแบบสแตก โดยหน่วยความจำแบบสแตก (Stack Memory) ทำหน้าที่เก็บ Primitive Data type และ Address of Object แต่หน่วยความจำแบบฮีป (Heap Memory) ทำหน้าที่เก็บวัตถุ
ตัวอย่าง 1.13 แสดงหน่วยความจำที่เหลือในฮีปเมโมรี่
Runtime r = Runtime.getRuntime();
r.gc(); // garbage collector
System.out.println(r.totalMemory()); // 5177344
long f1 = r.freeMemory(); // can not use int
int s[] = new int[10000];
r.gc();
try{
Thread.currentThread().sleep(1000); //sleep for 1000 ms
} catch(Exception e) { }
System.out.println(f1 – r.freeMemory()); // 40016
}