หน่วยความจำแบบสแตก และฮีป (Stack and Heap Memory)

หน่วยความจำแบบสแตก และฮีป (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

}