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, JavaWeakReference+queue, RustWeak::upgrade() -> Option