การจัดสรรหน่วยความจำและการรีไซเคิลของ Java เสร็จสมบูรณ์โดยอัตโนมัติโดยกระบวนการรวบรวม JVM Garbage ซึ่งแตกต่างจาก C นักพัฒนา Java ไม่จำเป็นต้องเขียนรหัสของตัวเองเพื่อใช้การรวบรวมขยะ นี่เป็นหนึ่งในคุณสมบัติมากมายที่ Java เป็นที่นิยมมากสำหรับทุกคนและสามารถช่วยโปรแกรมเมอร์ได้ดีขึ้นเขียนโปรแกรม Java
บทช่วยสอนนี้เป็นส่วนแรกของซีรีส์ ข้อกำหนดพื้นฐานจะได้รับการอธิบายก่อนเช่น JDK, JVM, JRE และ HOTSPOTVM ต่อไปเราจะแนะนำโครงสร้าง JVM และโครงสร้างหน่วยความจำ Java Heap การทำความเข้าใจพื้นฐานเหล่านี้เป็นสิ่งสำคัญสำหรับการทำความเข้าใจความรู้การรีไซเคิลขยะที่ตามมา
คำศัพท์จาวาที่สำคัญ
Javaapi: ชุดของห้องสมุดที่ห่อหุ้มซึ่งช่วยให้นักพัฒนาสร้างแอปพลิเคชัน Java
Java Development Toolkit (JDK): ชุดเครื่องมือเพื่อช่วยนักพัฒนาซอฟต์แวร์สร้างแอปพลิเคชัน Java JDK มีเครื่องมือในการคอมไพล์เรียกใช้แพ็คเกจแจกจ่ายและตรวจสอบแอปพลิเคชัน Java
Java Virtual Machine (JVM): JVM เป็นโครงสร้างคอมพิวเตอร์ที่เป็นนามธรรม โปรแกรม Java เขียนขึ้นตามคุณสมบัติของ JVM JVM มีความเฉพาะเจาะจงกับระบบปฏิบัติการและสามารถแปลคำแนะนำ Java เป็นคำแนะนำที่เป็นระบบพื้นฐานและดำเนินการ JVM ทำให้มั่นใจได้ว่าแพลตฟอร์มที่ไม่ขึ้นกับแพลตฟอร์มของ Java
Java Runtime Environment (JRE): JRE รวมถึงการใช้งาน JVM และ Java API
เครื่องเสมือน Javahotspot
การใช้งาน JVM แต่ละครั้งอาจใช้วิธีการที่แตกต่างกันในการใช้กลไกการรวบรวมขยะ ก่อนการเข้าซื้อกิจการของ Sun Oracle ใช้ JrockitJVM และหลังจากการซื้อกิจการใช้ HotSpotJVM ปัจจุบัน Oracle มีการใช้งาน JVM สองครั้งและการใช้งาน JVM สองครั้งจะรวมเข้าด้วยกันหลังจากระยะเวลาหนึ่ง
HotSpotJVM เป็นส่วนหนึ่งขององค์ประกอบหลักในปัจจุบันของมาตรฐานแพลตฟอร์ม Oraclese ในบทช่วยสอนคอลเลกชันขยะนี้เราจะเข้าใจหลักการรวบรวมขยะจากเครื่องเสมือนฮอตสปอต
สถาปัตยกรรม JVM
ภาพต่อไปนี้สรุปองค์ประกอบสำคัญของ JVM ในสถาปัตยกรรม JVM ส่วนประกอบหลักสองประการที่เกี่ยวข้องกับการรวบรวมขยะคือหน่วยความจำกองและตัวเก็บขยะ หน่วยความจำฮีปเป็นพื้นที่ข้อมูลหน่วยความจำที่ใช้ในการบันทึกอินสแตนซ์วัตถุที่รันไทม์ นักสะสมขยะจะทำงานที่นี่ ตอนนี้เรารู้แล้วว่าส่วนประกอบเหล่านี้ทำงานอย่างไรในกรอบ
หน่วยความจำ java heap
มีความจำเป็นที่จะต้องเข้าใจบทบาทของโมเดลหน่วยความจำ JVM ที่มีอยู่ในหน่วยความจำกอง ที่รันไทม์อินสแตนซ์ Java จะถูกเก็บไว้ในพื้นที่หน่วยความจำฮีป เมื่อวัตถุไม่ได้อ้างอิงอีกต่อไปเงื่อนไขจะถูกลบออกจากหน่วยความจำฮีป ในกระบวนการรวบรวมขยะวัตถุเหล่านี้จะถูกลบออกจากหน่วยความจำฮีปและพื้นที่หน่วยความจำจะถูกรีไซเคิล สามพื้นที่หลักต่อไปนี้ของหน่วยความจำกอง:
คนรุ่นใหม่
Eden Space (Edenspace, อินสแตนซ์ใด ๆ เข้าสู่พื้นที่หน่วยความจำรันไทม์ผ่านช่องว่าง Eden)
S0Survivor Space (S0Survivorspace, อินสแตนซ์ที่มีอยู่เป็นเวลานานจะถูกย้ายจากพื้นที่ Eden ไปยังพื้นที่ S0Survivor)
S1Survivor Space (อินสแตนซ์ที่มีอยู่เป็นระยะเวลานานจะถูกย้ายจากพื้นที่ S0Survivor ไปยังพื้นที่ S1Survivor)
อินสแตนซ์รุ่นเก่าจะได้รับการเลื่อนตำแหน่งจาก S1 เป็นดำรงตำแหน่ง (รุ่นชีวิต)
รุ่นถาวรมีข้อมูลเมตาเกี่ยวกับคลาสวิธีการและรายละเอียดอื่น ๆ
พื้นที่ผลิตถาวรถูกลบออกในคุณสมบัติ Java 8
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้สั้น ๆ แนะนำกลไกการรวบรวมขยะ Java และฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!