Middle — Middle+
Tizimda fantom havolasiga qanday kirish mumkin?
sobes.tech AI
AIdan javob
Android (Java) içində PhantomReference, artıq çöp toplayıcı üçün hazır olan, lakin hələ yaddaşdan silinməmiş obyektləri izləmək üçün istifadə olunur. PhantomReference vasitəsilə obyektə birbaşa get() çağırışı etmək olmaz — həmişə null qaytarır.
Obyektə giriş yalnız ReferenceQueue vasitəsilə mümkündür; obyekt əlçatmaz hala gəldikdən sonra PhantomReference bu queue-ya yerləşdirilir. Buna görə, PhantomReference ilə işləmək üçün:
- ReferenceQueue ilə PhantomReference yaradın.
- Obeyektin silinməyə hazır olduğunu bilmək üçün ReferenceQueue-nu izləyin.
Nümunə:
ReferenceQueue<MyObject> refQueue = new ReferenceQueue<>();
PhantomReference<MyObject> phantomRef = new PhantomReference<>(myObject, refQueue);
// Digər bir thread və ya dövrədə:
Reference<?> ref = refQueue.poll();
if (ref != null) {
// myObject obyekti silinməyə hazırdır
// Burada resursları azad edə bilərsiniz
}
Beləliklə, PhantomReference vasitəsilə obyektə birbaşa giriş yoxdur — bu, obyektin silinməyə hazır olduğunu bildirmək üçün istifadə olunur.