ข้อมูลอ้างอิงมีสี่ประเภทตามวิธีการรวบรวมข้อมูลขยะ
- การอ้างอิงที่แข็งแกร่ง
- การอ้างอิงที่อ่อนแอ
- การอ้างอิงที่นุ่มนวล
- ข้อมูลอ้างอิงภูตผี
อ้างอิงที่แข็งแกร่ง
เป็นชนิดเริ่มต้นของอ็อบเจ็กต์อ้างอิง ออบเจ็กต์ที่มีการอ้างอิงที่แข็งแกร่งที่ใช้งานอยู่ไม่สามารถเก็บขยะได้ เป็นไปได้ก็ต่อเมื่อตัวแปรที่มีการอ้างอิงอย่างแน่นหนาชี้ไปที่ค่า null ลองดูตัวอย่าง -
ตัวอย่าง
class Demo { //Some functionality } public class Demo_example{ public static void main(String[] args){ Demo my_inst = new Demo(); my_inst = null; } }
การอ้างอิงที่อ่อนแอ
สิ่งเหล่านี้ไม่ใช่คลาสเริ่มต้นของอ็อบเจ็กต์อ้างอิง ดังนั้นจึงจำเป็นต้องระบุอย่างชัดเจน โดยทั่วไปจะใช้กับ WeakHashmap เพื่ออ้างอิงวัตถุรายการ การอ้างอิงที่อ่อนแอดังกล่าวถูกทำเครื่องหมายว่าเป็นการรวบรวมขยะโดย Java Virtual Machine การอ้างอิงดังกล่าวสร้างขึ้นโดยใช้คลาส 'java.lang.ref.WeakReference'
เรามาดูตัวอย่างกัน −
ตัวอย่าง
import java.lang.ref.WeakReference; class Demo{ public void display_msg(){ System.out.println("Hello"); } } public class Demo_sample{ public static void main(String[] args){ Demo inst = new Demo(); inst.display_msg(); WeakReference<Demo> my_weak_ref = new WeakReference<Demo>(inst); inst = null; inst = my_weak_ref.get(); inst.display_msg(); }
ผลลัพธ์
Hello Hello
คลาสชื่อ Demo มีฟังก์ชันชื่อ 'display_msg' ฟังก์ชันนี้แสดงข้อความที่เกี่ยวข้อง ในอีกคลาสหนึ่งชื่อ 'Demo_sample' ฟังก์ชันหลักจะถูกกำหนด และสร้างอินสแตนซ์ของคลาสสาธิต ฟังก์ชัน 'display_msg' ถูกเรียกใช้บนอินสแตนซ์ การอ้างอิงที่อ่อนแอของคลาส Demo ถูกสร้างขึ้น และ Demo insatne ถูกกำหนดให้เป็น null และฟังก์ชันจะถูกเรียกใช้อีกครั้ง เอาต์พุตที่เกี่ยวข้องจะแสดงบนคอนโซล