ต่อไปนี้เป็นประเด็นสำคัญบางประการในการทำความเข้าใจ JVM Stack Area -
-
ในระหว่างการสร้างเธรด Java Virtual Machine จะสร้างสแต็กแยกต่างหาก
-
JVM ดำเนินการเพียงสองครั้งบนสแต็กนี้ การดำเนินการเป็นแบบพุช (เช่น แทรก) และป๊อป (เช่น ลบ)
-
เมื่อเธรดกำลังทำงาน สแต็กที่เกี่ยวข้องจะเรียกว่าสแต็กรันไทม์
-
ทุกการเรียกใช้เมธอดที่ทำโดยเธรด การคำนวณระดับกลาง การกำหนดตัวแปรโลคัล พารามิเตอร์การเรียก ฯลฯ จะถูกจัดเก็บเป็นการดำเนินการในรันไทม์สแต็ก
-
เมื่อเธรดหยุดหรือดำเนินการเสร็จสิ้น ส่วนที่เกี่ยวข้องจากสแต็กจะถูกลบออก
-
เมื่อการเรียกทั้งหมดโดยเธรดเสร็จสิ้น สแต็กจะว่างเปล่าและถูกลบ
-
ก่อนสิ้นสุดเธรด JVM จะทำลายสแต็กที่เกี่ยวข้องกับเธรด
-
สแต็กที่จัดเก็บข้อมูลที่เกี่ยวข้องกับเธรดนั้นมีให้ใช้งานเฉพาะกับเธรดนั้นเท่านั้น และไม่สามารถเข้าถึงเธรดอื่นได้
-
สิ่งนี้บ่งชี้ว่าข้อมูลในสแต็กนั้นปลอดภัยสำหรับเธรด
-
ทุกข้อมูลในสแต็กที่เกี่ยวข้องกับเธรดนั้นเรียกว่าบันทึกการเปิดใช้งานหรือสแต็กเฟรม
หมายเหตุ − ไม่จำเป็นสำหรับสแต็ก JVM ที่จะมีตำแหน่งหน่วยความจำที่ต่อเนื่องกัน
โครงสร้างของเรกคอร์ดการเปิดใช้งาน/สแต็กเฟรม
ประกอบด้วยสามองค์ประกอบ -
-
อาร์เรย์ตัวแปรท้องถิ่น
-
ตัวถูกดำเนินการ และ
-
ข้อมูลเฟรม
-
JVM สร้างสแต็กเฟรมตามขนาดที่ต้องการโดยตรวจสอบข้อมูลคลาส
-
Operand Stack ทำหน้าที่เหมือนเวิร์กสเปซของ JVM ซึ่งใช้สำหรับเก็บผลการคำนวณระดับกลาง มีโครงสร้างเหมือนอาร์เรย์ตัวแปรในเครื่อง แต่สามารถเข้าถึงได้โดยดำเนินการพุชและป๊อปในสแต็ก
-
ข้อมูลเฟรม - มันมีค่าข้อมูลคงที่และวิธีการส่งข้อมูลกลับ นอกจากนี้ ยังมีการอ้างอิงไปยังตารางข้อยกเว้นที่มีข้อมูลทั้งหมดเกี่ยวกับ catch block เมื่อจำเป็นต้องตรวจจับข้อยกเว้นและต้องแสดงข้อความที่เกี่ยวข้องบนคอนโซล