การอ้างอิงแบบนุ่มนวลมักใช้เพื่อนำแคชที่ไวต่อหน่วยความจำไปใช้ ให้เราดูตัวอย่างของ softreferences ใน Java −
ตัวอย่าง
import java.lang.ref.SoftReference; class Demo{ public void display_msg(){ System.out.println("Hello there"); } } public class Demo_example{ public static void main(String[] args){ Demo my_instance = new Demo(); my_instance.display_msg(); SoftReference<Demo> my_softref = new SoftReference<Demo>(my_instance); my_instance = null; my_instance = my_softref.get(); my_instance.display_msg(); } }
ผลลัพธ์
Hello there Hello there
คลาสชื่อ Demo มีฟังก์ชันชื่อ 'display_msg' ซึ่งแสดงข้อความที่เกี่ยวข้อง มีการกำหนดคลาสอื่นที่ชื่อ 'Demo_example' ซึ่งมีฟังก์ชันหลัก ที่นี่ อินสแตนซ์ของคลาสสาธิตจะถูกสร้างขึ้น และฟังก์ชัน 'display_msg' ถูกเรียกใช้ในอินสแตนซ์นี้ มีการสร้างอินสแตนซ์ ASoftReference สำหรับคลาสสาธิต และอินสแตนซ์ถูกกำหนดให้เป็นโมฆะ ฟังก์ชัน 'get' ถูกเรียกใช้บนอ็อบเจ็กต์ softreference นี้ และกำหนดให้กับอินสแตนซ์ก่อนหน้า ฟังก์ชัน 'display_msg' ถูกเรียกใช้ในอินสแตนซ์นี้ ข้อความที่เกี่ยวข้องจะแสดงบนคอนโซล
การอ้างอิง Phantom มักใช้สำหรับจัดกำหนดการการดำเนินการล้างข้อมูลก่อนการตายในวิธีที่ยืดหยุ่นกว่าที่เป็นไปได้ด้วยกลไกการทำให้สมบูรณ์ของ Java
ให้เรามาดูตัวอย่าง Phantom References -
ตัวอย่าง
import java.lang.ref.*; class Demo{ public void display_msg(){ System.out.println("Hello there"); } } public class Demo_example{ public static void main(String[] args){ Demo my_instance = new Demo(); my_instance.display_msg(); ReferenceQueue<Demo> refQueue = new ReferenceQueue<Demo>(); PhantomReference<Demo> phantomRef = null; phantomRef = new PhantomReference<Demo>(my_instance,refQueue); my_instance = null; my_instance = phantomRef.get(); my_instance.display_msg(); } }
ผลลัพธ์
Hello there Exception in thread "main" java.lang.NullPointerException at Demo_example.main(Demo_example.java:22)
คลาสชื่อ Demo มีฟังก์ชันชื่อ 'display_msg' ที่แสดงข้อความที่เกี่ยวข้อง คลาสอื่นชื่อ Demo_example มีฟังก์ชันหลัก ฟังก์ชันนี้มีอินสแตนซ์ของคลาสสาธิต และเรียกใช้ฟังก์ชัน 'display_msg' จากนั้น อินสแตนซ์ ReferenceQueue จะถูกสร้างขึ้น อินสแตนซ์ PhantomReference อื่นถูกสร้างขึ้นและกำหนดเป็น 'null' จากนั้น อินสแตนซ์ก่อนหน้าถูกกำหนดเป็น null จากนั้นฟังก์ชัน 'display_msg' จะถูกเรียกใช้ในอินสแตนซ์นี้ เอาต์พุตที่เกี่ยวข้องจะแสดงบนคอนโซล