ความแตกต่างระหว่าง Java Stack และ HEAP
1. กลไกการรวบรวมขยะจะทำหน้าที่เฉพาะในหน่วยความจำกองและไม่มีส่วนเกี่ยวข้องกับหน่วยความจำสแต็ก
2. สแต็ค: สแต็กเร็วกว่าการเข้าถึงมากกว่ากองและมีประสิทธิภาพสูงในการบันทึกค่าอ้างอิงของตัวแปรและวัตถุในท้องถิ่น
3. ฮีป: บันทึกตัวแปรขนาดใหญ่
4. มีคุณสมบัติพิเศษที่สำคัญมากของสแต็กนั่นคือข้อมูลที่มีอยู่ในสแต็กสามารถแชร์ได้
เมื่อคอมไพเลอร์ประมวลผล int a = 3 มันจะสร้างการอ้างอิงไปยังตัวแปร A ในสแต็กก่อนจากนั้นค้นหาว่าค่า 3 มีอยู่ในสแต็กหรือไม่ หากไม่มีอยู่ 3 จะถูกเก็บไว้;
เช่นเดียวกันเมื่อประมวลผล B = 3 เนื่องจาก 3 ถูกเก็บไว้ก่อนหน้านี้ดังนั้นคอมไพเลอร์จะต้องชี้ตัวแปรที่สร้าง B ถึง 3 (ซึ่งเอื้อต่อการประหยัดพื้นที่)
ในเวลานี้ A และ B ชี้ไปที่ 3 ในเวลาเดียวกัน แต่ก็ไม่ส่งผลกระทบต่อการใช้งานของพวกเขา ถ้า a = 4; ถูกกำหนดในเวลานี้ 4 จำเป็นต้องเก็บไว้ในหน่วยความจำชี้จาก A ถึง 4 และการปรับเปลี่ยนค่าจะไม่ส่งผลกระทบต่อค่า B
แผนกหน่วยความจำ: 1, ลงทะเบียน 2. พื้นที่วิธีการท้องถิ่น 3. พื้นที่วิธีการ 4. หน่วยความจำสแต็ก ตัวแปรท้องถิ่นที่เก็บไว้ทั้งหมด ยิ่งกว่านั้นเมื่อขอบเขตที่ตัวแปรสิ้นสุดลงตัวแปรจะถูกปล่อยออกมาโดยอัตโนมัติ 5. กองหน่วยความจำ ที่เก็บข้อมูลเป็นอาร์เรย์และวัตถุ (อันที่จริงอาร์เรย์เป็นวัตถุ) ใหม่ใด ๆ ที่สร้างขึ้นในกอง คุณสมบัติ: 1. แต่ละเอนทิตีมีค่าที่อยู่บ้าน 2. ตัวแปรแต่ละตัวในหน่วยความจำฮีปมีค่าเริ่มต้นเริ่มต้นซึ่งแตกต่างกันไปตามประเภท จำนวนเต็มคือ 0, ทศนิยม 0.0 หรือ 0.0F, บูลีนเท็จถ่าน '/U0000' 3, กลไกการรวบรวมขยะ
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!