บทความนี้จะวิเคราะห์วิธีการทำลายอ็อบเจ็กต์ใน Java โดยละเอียดยิ่งขึ้น แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
ตัวแปรประเภทข้อมูลพื้นฐานและตัวแปรอ้างอิงชื่ออ็อบเจ็กต์ใน Java ล้วนเป็นตัวแปรท้องถิ่นหากถูกกำหนดไว้ในวิธีการ แต่วัตถุนั้นไม่จำเป็นต้องมีวงจรชีวิตในท้องถิ่น หากมีตัวแปรอ้างอิงอื่นไปยังออบเจ็กต์ภายนอกฟังก์ชัน วงจรชีวิตของออบเจ็กต์จะขยายไปยังบล็อกที่มีตัวแปรอ้างอิงอื่นอยู่
หากค่าหรือค่าที่ส่งคืนถูกส่งผ่านจากการอ้างอิงพารามิเตอร์ของฟังก์ชันที่ถูกเรียกไปยังตัวแปรประเภทอ็อบเจ็กต์ของฟังก์ชันการเรียกหลัก อ็อบเจ็กต์นั้นจะยังคงอยู่ (แต่วงจรชีวิตของตัวแปรอ้างอิงของอ็อบเจ็กต์ของฟังก์ชันที่ถูกเรียกจะสิ้นสุดลง ดังนั้น ตัวแปรอ้างอิงคือตัวแปรโลคัล ) ในเวลานี้อ็อบเจ็กต์จะแยกผ่านอายุการใช้งานโลคัลของตัวแปรโลคัล
การทำลายวัตถุ Java
ตัวรวบรวมขยะใน Java จะสแกนหน่วยความจำแบบไดนามิกของอ็อบเจ็กต์ Java เป็นประจำและทำเครื่องหมายอ็อบเจ็กต์อ้างอิงทั้งหมด (ไม่มีตัวแปรอ้างอิงเชื่อมโยงกับอ็อบเจ็กต์) จะล้างเครื่องหมายและอ็อบเจ็กต์ที่ไม่ได้ทำเครื่องหมายทั้งหมดจะถูกรีไซเคิลเป็นขยะ และพื้นที่หน่วยความจำที่ถูกครอบครองโดยวัตถุขยะจะถูกปล่อยออกมา
หลังจากที่วัตถุทำงานหรือเมื่อวงจรชีวิตของวัตถุสิ้นสุดลง มันจะกลายเป็นวัตถุขยะ แต่ไม่ได้หมายความว่าจะถูกรีไซเคิลทันที วัตถุเหล่านั้นจะถูกรีไซเคิลเฉพาะเมื่อตัวรวบรวมขยะไม่ได้ใช้งานหรือมีหน่วยความจำไม่เพียงพอ
ทุกอ็อบเจ็กต์ใน Java มีเมธอด Finalize():
โมฆะที่ได้รับการป้องกันสรุป () พ่น Throwable {}
ตัวรวบรวมขยะจะเรียกเมธอด Finalize() ของอ็อบเจ็กต์โดยอัตโนมัติเพื่อปล่อยทรัพยากรระบบเมื่อรีไซเคิลอ็อบเจ็กต์
สรุป () ต้นแบบฟังก์ชัน:
protected void | finalize () เรียกโดยตัวรวบรวมขยะบนวัตถุเมื่อขยะคอลเลกชันกำหนดว่าไม่มีการอ้างอิงอีกต่อไป วัตถุ |