Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างหน่วยความจำ Heap และ String Constant Pool ใน Java

หน่วยความจำ Heap (Heap Memory)

  • หน่วยความจำ Heap เป็นพื้นที่ข้อมูลรันไทม์ที่จัดสรรหน่วยความจำสำหรับอินสแตนซ์ของคลาส Java ทั้งหมดและอาร์เรย์
  • Heap ถูกสร้างเมื่อ JVM เริ่มต้น และอาจเพิ่มหรือลดขนาดขณะที่แอปพลิเคชันทำงาน
  • ขนาดของ Heap สามารถระบุได้โดยใช้ตัวเลือก VM –Xms Heap อาจมีขนาดคงที่หรือเปลี่ยนแปลงได้ขึ้นอยู่กับกลยุทธ์การเก็บขยะ ขนาด Heap สูงสุดสามารถตั้งค่าได้ด้วยตัวเลือก –Xmx
  • โดยค่าเริ่มต้น ขนาด Heap สูงสุดถูกตั้งค่าที่ 64 MB

String Constant Pool

  • String ใช้ตำแหน่งหน่วยความจำพิเศษเพื่อนำออบเจ็กต์ String ไปใช้ซ้ำ เรียกว่า String Constant Pool
  • ออบเจ็กต์ String ที่สร้างโดยไม่ใช้คีย์เวิร์ด new จะถูกเก็บในส่วน String Constant Pool ของ Heap
  • ลักษณะสำคัญหนึ่งของ String constant pool คือ มันไม่สร้างออบเจ็กต์ String เดียวกันซ้ำ หากมี String constant นั้นอยู่ใน pool แล้ว