การแบ่งพาร์ติชันหน่วยความจำ Java:
ในการจัดสรรหน่วยความจำ Java นั้น Java แบ่งหน่วยความจำออกเป็น: พื้นที่วิธีการ, ฮีป, สแต็กเครื่องเสมือน, สแต็กวิธีการในเครื่อง และตัวนับโปรแกรม พื้นที่วิธีการและฮีปถูกใช้ร่วมกันโดยเธรดทั้งหมด ในขณะที่สแต็กเครื่องเสมือน สแต็กวิธีการในเครื่อง และตัวนับโปรแกรมจะแยกเธรด แต่ละพื้นที่มีเวลาในการสร้างและทำลายล้างของตัวเอง
ตัวนับโปรแกรม:
มันถูกใช้เป็นตัวบ่งชี้หมายเลขบรรทัดของไบต์ที่ดำเนินการโดยเธรดปัจจุบัน มัลติเธรดของ Java ถูกนำมาใช้โดยการสลับเธรดตามลำดับและจัดสรรเวลาดำเนินการของโปรเซสเซอร์ ดังนั้น เพื่อให้แต่ละเธรดกลับสู่ตำแหน่งที่ถูกต้องหลังจากการสลับ แต่ละเธรดจำเป็นต้องมีตัวนับโปรแกรมอิสระ
สแต็กเครื่องเสมือน Java:
เมื่อดำเนินการแต่ละรายการ เฟรมสแต็กจะถูกสร้างขึ้นพร้อมกันเพื่อจัดเก็บตารางตัวแปรโลคัล สแต็กตัวถูกดำเนินการ ลิงก์ไดนามิก ทางออกของเมธอด และข้อมูลอื่น ๆ สแตกหน่วยความจำเสมือนคือสิ่งที่เรามักเรียกว่า "สแตก" หน่วยความจำที่จำเป็นสำหรับตารางตัวแปรโลคัลได้รับการจัดสรร ณ เวลาคอมไพล์
สแต็กวิธีการท้องถิ่น:
เช่นเดียวกับสแต็กเครื่องเสมือน ข้อแตกต่างคือสแต็กเครื่องเสมือนเรียกใช้บริการวิธี Java สำหรับเครื่องเสมือน ในขณะที่เมธอดสแต็กในเครื่องให้บริการเครื่องเสมือนโดยใช้วิธีดั้งเดิม
ฮีปจาวา:
แชร์โดยโปรแกรมทั้งหมดและสร้างขึ้นเมื่อเครื่องเสมือนเริ่มทำงาน พื้นที่หน่วยความจำนี้ใช้เพื่อจัดเก็บอินสแตนซ์ของวัตถุ ตามกฎข้อบังคับของเครื่องเสมือน Java ฮีป Java สามารถอยู่ในพื้นที่หน่วยความจำที่ไม่ต่อเนื่องทางกายภาพได้ตราบใดที่มีความต่อเนื่องทางตรรกะ
พื้นที่วิธีการ:
เช่นเดียวกับฮีปที่แชร์ระหว่างเธรด หน้าที่ของมันคือจัดเก็บข้อมูล เช่น ข้อมูลคลาส ค่าคงที่ ตัวแปรคงที่ โค้ดที่คอมไพล์โดยคอมไพเลอร์ทันเวลา ฯลฯ ที่ถูกโหลดโดยเครื่องเสมือน
พูลคงที่รันไทม์:
เป็นส่วนหนึ่งของพื้นที่วิธีการ หน้าที่ของมันคือจัดเก็บการอ้างอิงตามตัวอักษรและสัญลักษณ์ต่างๆ ที่สร้างขึ้นระหว่างการคอมไพล์