หลังจากใช้อ็อบเจ็กต์แล้ว อ็อบเจ็กต์จะถูกจัดสรรคืนจากหน่วยความจำโดยใช้คลาส Garbage Collector วัตถุจะถูกทำลายโดยอิงจากข้อเท็จจริงที่ว่าไม่มีการอ้างอิงถึงวัตถุนั้น คลาส Garbage Collector เรียกใช้ฟังก์ชัน 'finalize' บนวัตถุที่ต้องการทำลาย
เกาะแห่งความโดดเดี่ยวคืออะไร
เมื่อวัตถุสองชิ้น "a" และ "b" อ้างอิงถึงกัน และไม่ได้อ้างอิงวัตถุอื่นใด จะเรียกว่าเกาะแห่งการแยกตัว
เป็นกลุ่มของอ็อบเจ็กต์ที่อ้างอิงถึงกันแต่ไม่ได้อ้างอิง แต่เป็นอ็อบเจกต์อื่นๆ ของแอปพลิเคชั่นอื่นเลย
หมายเหตุ − วัตถุที่ไม่ได้อ้างอิงเพียงชิ้นเดียวก็เป็นเกาะแห่งความโดดเดี่ยวเช่นกัน
เรามาดูตัวอย่างกัน −
ตัวอย่าง
public class Demo{ Demo i; public static void main(String[] args){ Demo my_ob_1 = new Demo(); System.out.println("Demo object one has been created"); Demo my_ob_2 = new Demo(); System.out.println("Demo object two has been created"); my_ob_1.i = my_ob_2; my_ob_2.i = my_ob_1; my_ob_1 = null; my_ob_2 = null; System.gc(); } @Override protected void finalize() throws Throwable{ System.out.println("The finalize method has been called on the object"); } }
ผลลัพธ์
Demo object one has been created Demo object two has been created The finalize method has been called on the object The finalize method has been called on the object
คลาสชื่อ Demo มีฟังก์ชันหลัก ที่นี่ ตัวแปรของคลาสสาธิตประเภทจะถูกสร้างขึ้น มีการสร้างอินสแตนซ์ของคลาสสาธิตและกำหนดออบเจ็กต์ที่สองให้กับออบเจ็กต์สาธิตของออบเจ็กต์แรก ทำเช่นเดียวกันกับ dobject ที่สองด้วย ตอนนี้ อ็อบเจ็กต์ทั้งสองนี้ถูกกำหนดให้เป็นโมฆะและเรียกใช้ฟังก์ชัน 'System.gc' ตอนนี้ ฟังก์ชัน 'finalize' ถูกแทนที่