java 板


LINE

..原文恕刪 感謝jtmh的回答,在這邊我原文可能沒有表達好,這次重新修改成例子+描述下好了~ (重申一下.. LinkedList.java: http://pastie.org/2730219 , 很抱歉我原文沒有Po出來~) 假設整個結構長這樣,而element這欄位是否會被GC回收先忽略掉: (size = 3) 註: _Instance1 2 3 是方便用的,實際沒有這變數。 header←═════════════════════════╗ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐║ │ element │ │ element │ │ element │ │ element │║ │┌───┐│ │┌───┐│ │┌───┐│ │┌───┐│║ ││ ││ ││ ││ ││ ││ ││ ││║ │└───┘│ │└───┘│ │└───┘│ │└───┘│║ │ │ │ │ │ │ │ │║ │ next │ │ next │ │ next │ │ next │║ │┌───┐│ │┌───┐│ │┌───┐│ │┌───┐│║ ││ ╪╪→││ ╪╪→││ ╪╪→││ ╪╪╝ │└───┘│ │└───┘│ │└───┘│ │└───┘│ │ │ │ │ │ │ │ │ │ previous │ │ previous │ │ previous │ │ previous │ │┌───┐│ │┌───┐│ │┌───┐│ │┌───┐│ ╔╪╪ ││←╪╪ ││←╪╪ ││←╪╪ ││ ║│└───┘│ │└───┘│ │└───┘│ │└───┘│ ║└─────┘ └─────┘ └─────┘ └─────┘ ║ _Instance1 _Instance2 _Instance3 ║ ↑ ╚═══════════════════════════╝ 圖一、未remove前的狀態 假設現在的remove改成了remove_x,換句話說就是這樣: private E remove_x(Entry<E> e) { if (e == header) throw new NoSuchElementException(); E result = e.element; e.previous.next = e.next; e.next.previous = e.previous; size--; modCount++; return result; } 那麼倘若執行了以下敘述: remove_x(_Instance1); 那麼整個結構就會轉成這副德性: ╔═══════════════════════════╗ ↓ ╔═══════════╗ ║ header ║ ↓ ║ ┌─────┐║┌─────┐ ┌─────┐ ┌─────┐║ │ element │║│ element │ │ element │ │ element │║ │┌───┐│║│┌───┐│ │┌───┐│ │┌───┐│║ ││ ││║││ ││ ││ ││ ││ ││║ │└───┘│║│└───┘│ │└───┘│ │└───┘│║ │ │║│ │ │ │ │ │║ │ next │║│ next │ │ next │ │ next │║ │┌───┐│║│┌───┐│ │┌───┐│ │┌───┐│║ ││ ╪╪╝││ ╪╪→││ ╪╪→││ ╪╪╝ │└───┘│ │└───┘│ │└───┘│ │└───┘│ │ │ │ │ │ │ │ │ │ previous │ │ previous │ │ previous │ │ previous │ │┌───┐│ │┌───┐│ │┌───┐│ │┌───┐│ ╔╪╪ ││←╪╪ ││╔╪╪ ││←╪╪ ││ ║│└───┘│ │└───┘│║│└───┘│ │└───┘│ ║└─────┘ └─────┘║└─────┘ └─────┘ ║ ↑ _Instance1 ║ _Instance2 _Instance3 ║ ╚═══════════╝ ↑ ╚═══════════════════════════╝ 圖二、remove_x(_Instance1)後的狀態 而現在假設GC還沒把_Instance1這個東西吃掉而繼續執行下面的敘述: remove_x(_Instance2); 那麼整個結構接著會轉成這副德性: ╔═══════════════════════════╗ ↓ ╔═══════════════════╗ ║ header ║ ↓ ║ ┌─────┐║┌─────┐ ┌─────┐ ┌─────┐║ │ element │║│ element │ │ element │ │ element │║ │┌───┐│║│┌───┐│ │┌───┐│ │┌───┐│║ ││ ││║││ ││ ││ ││ ││ ││║ │└───┘│║│└───┘│ │└───┘│ │└───┘│║ │ │║│ │ │ │ │ │║ │ next │║│ next │ │ next │ │ next │║ │┌───┐│║│┌───┐│ │┌───┐│ │┌───┐│║ ││ ╪╪╝││ ╪╪→││ ╪╪→││ ╪╪╝ │└───┘│ │└───┘│ │└───┘│ │└───┘│ │ │ │ │ │ │ │ │ │ previous │ │ previous │ │ previous │ │ previous │ │┌───┐│ │┌───┐│ │┌───┐│ │┌───┐│ ╔╪╪ ││←╪╪ ││╔╪╪ ││╔╪╪ ││ ║│└───┘│ │└───┘│║│└───┘│║│└───┘│ ║└─────┘ └─────┘║└─────┘║└─────┘ ║ ↑↑ _Instance1 ║ _Instance2 ║ _Instance3 ║ ║╚═══════════╝ ║ ↑ ║ ╚════════════════════╝ ║ ╚═══════════════════════════╝ 圖三、續圖二後remove_x(_Instance2)後的狀態 而現在重點來了~ 既定事實: (根據上幾篇看後的推測) 如果現在GC抓_Instance1,是可以回收的! 另一方面,現在GC抓_Instance2,是不可以回收的(因為被_Instance1參照)! 理論上 LinkedList是存取不到 _Instance1和_Instance2。 以及如果GC回收_Instance1,那麼_Instance2也就變得可以回收, 但若倒過來(先回收_Instance2再回收_Instance1)則不行。 問題: 1. 在remove_x二個_Instance後,GC是否還能夠把這二個_Instance回收掉。 2. 如果GC能夠回收掉,那麼寫null的意義為何? 不會是能讓GC更快回收吧? 3. 如果GC不能夠回收掉,那麼寫這null就很必要的了? (好灰暗啊...) PS: 仍舊老話那句,對於半路出家的我,希望各位能夠指點迷津~~~ =ˇ= ...用記事本編輯好久 orz --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.77.96







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP