??????????3????What??Why??How??????????????Java?е???????????Java???????????塢??????ó???????÷????????????????????????????????????????????????????????????????лл??????
????1. What——???????????
????Java?е??????t????????java.lang.ref.WeakReference<T>????????????????1??????????????????
???????????????????????????????????????????????????????ó?????????????淶???(canonicalizing mappings?????????????
????????????????????????????????????????????(weakly reachable)????????????????????????????????????????????????????????????????????????????????????????????????????(finalizable)????????????????????????????????????????????Щ????????????÷??????????????????????????????(Reference Queue)?С?
??????????Java?д??????????????????????????????????á??????á??????á??????á???????????????3???????????????????????
??????????Strong Reference??????????????new?????????????????????????????????????????????????????????????????????(strongly reachable)???????????????
???????????Soft Reference?????????ú????????????????????????????????????????????????????????????????????????????????治???????????????????????????????“?”?Щ
???????????Phantom Reference????????????Java????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????У?????????????????????????
????2. Why——?????????????
???????????????????????????Product???????????????????????????????????????????????????????????????????????????HashMap<Product?? Integer>???????????????????????????????????Product?????????????У???????????????????????????????????????productA????????????productA????null????????productA???????Product?????????????????????????HashMap???????????????????£????????????????????Product??????????????????????null???????????????????????HashMap??????????“??HashMap?????????????????”????????????????????????????????????????????????HashMap?е?key????????Product?????????£???????????Product????????????????????????????壬???????????????????????????????????????????Product???????????????????HashMap?е?key???????
????3. How——?????????????
????????????????????????????????????Product???????????????????HashMap??key?????????????????????????
????productA = new Product(...);
????WeakReference<Product> weakProductA = new WeakReference<>(productA);
??????????????????weakProductA?????Product????productA???????????????weakProduct???????????Product????productA??????????????????????
????Product product = weakProductA.get();
???????????????????????Java????????????WeakHashMap????ú??????????????????????????????????????????????????????????productA???null????????????????Product????????????????У????????????Product??????????????????weakProductA???????????????????Product??????????????????????????????????????Product?????漴???????????????????????????????????С?
?????????????????????????????е?????????WeakReference????????????????
????WeakReference(T referent) //????????????????????????
????WeakReference(T referent?? ReferenceQueue<? super T> q) //????????????????????????????????е???????
??????????????????????????????????ReferenceQueue????????????????????????????????????????????????????????????????????????????????????????????????????????????У????????????Щ??????????????????????????