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

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


หน่วยความจำฮีป

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

สตริงค่าคงที่ของสตริง

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