Foundationপ্রথম নীতি থেকে
LEVEL 5 · Programming Languages

Weak Reference

উইক রেফারেন্স

এমন pointer যা object-কে জীবিত রাখে না — target GC হয়ে গেলে weak ref নিজে থেকেই খালি (nil/cleared) হয়ে যায়।

Strong ref = ownership (“আমি আছি তো সে থাকবে”); weak ref = observation:

import weakref
cache[filename] = weakref.ref(big_data)   # cache টেনে ধরে না
d = cache[filename]()                     # None হলে GC খেয়েছে — rebuild
  • Reference counting cycle-এর classic fix: parent→strong, child→parent weak
  • Cache/memoize, observer list, canonical table — যেখানে lifetime caller-এর হাতে
  • API shape ভাষায় ভাষায়: Python weakref, Java WeakReference+queue, Rust Weak::upgrade() -> Option