看板 java 關於我們 聯絡資訊
注意有上色的 b1 b2 b3,同顏色表示同一個變數 # 10~11 : ╭───────╮ b1 ───→│ Beta │ ╰───────╯ ╭───────╮ b2 ───→│ Beta │ ╰───────╯ ========================================= # 12~13 : Alpha.b1 ───→ null ╭──────╮ │ Alpha │ null←┼─b1 (s) │←─── a1 ╭───────╮ null←┼─b2 │ b1 ───→│ Beta │ ╰──────╯ ╰───────╯ ╭───────╮ ╭──────╮ b2 ───→│ Beta │ │ Alpha │←─── a2 ╰───────╯ null←┼─b1(s) │ null←┼─b2 │ ╰──────╯ ========================================= # 14 : Alpha.b1 ──╮ ╭──╮ ╭──────╮ │ │ │ │ Alpha │ ↓ ↓ ╰───┼─b1 (s) │←─── a1 ╭───────╮ null←┼─b2 │ b1 ───→│ Beta │ ←╮ ╰──────╯ ╰───────╯ ╭───────╮ ╭──────╮ b2 ───→│ Beta │ │ Alpha │←─── a2 ╰───────╯ ╰──┼─b1(s) │ null←┼─b2 │ ╰──────╯ ========================================= # 15 : Alpha.b1 ──╮ ╭──╮ ╭──────╮ │ │ │ │ Alpha │ ↓ ↓ ╰───┼─b1 (s) │←─── a1 ╭───────╮ ╭─┼─b2 │ b1 ───→│ Beta │ ←─╯ ╰──────╯ ╰───────╯ ←╮ ╭───────╮ │ ╭──────╮ b2 ───→│ Beta │ │ │ Alpha │←─── a2 ╰───────╯ ╰──┼─b1(s) │ null←┼─b2 │ ╰──────╯ ========================================= # 16 : Alpha.b1 ──╮ ╭──╮ ╭──────╮ │ │ │ │ Alpha │ ↓ ↓ ╰───┼─b1 (s) │←─── a1 ╭───────╮ ╭─┼─b2 │ b1 ───→│ Beta │ ←─╯ ╰──────╯ ╰───────╯ ←─╮ ╭───────╮ │ ╭──────╮ b2 ───→│ Beta │ ←╮│ │ Alpha │←─── a2 ╰───────╯ ╰─┼─b1(s) ╰──┼─b2 │ ╰──────╯ ========================================= # 17 : Alpha.b1 ──╮ ╭──╮ ╭──────╮ null │ │ │ │ Alpha │ null ↓ ↓ ╰───┼─b1 (s) ╰── a1 ╭───────╮ ╭─┼─b2 │ b1 ──╯ │ Beta │ ←─╯ ╰──────╯ ╰───────╯ ←─╮ ╭───────╮ │ ╭──────╮ b2 ──╮ │ Beta │ ←╮│ │ Alpha │←─── a2 ╰───────╯ │╰─┼─b1(s) null ╰──┼─b2 │ ╰──────╯ ========================================= 整理 1 : 把不必要的圖拿掉 Alpha.b1 ──╮ ╭──╮ ╭──────╮ │ │ │ │ Alpha │ ↓ ↓ ╰───┼─b1 (s) │ ╭───────╮ ╭─┼─b2 │ │ Beta │ ←─╯ ╰──────╯ ╰───────╯ ←─╮ ╭───────╮ │ ╭──────╮ │ Beta │ ←╮│ │ Alpha │←─── a2 ╰───────╯ │╰─┼─b1(s) │ ╰──┼─b2 │ ╰──────╯ ========================================= 整理 2 : 由於 b1 是 static , 就算沒有任何 Alpha 實體(或被回收) 這個 field 還是會存在,所以把 b1 從各實體裡面拿掉(比較好觀察) Alpha.b1 ──╮ ╭──────╮ │ │ Alpha │ ↓ │ │ ╭───────╮ ╭─┼─b2 │ │ Beta │ ←─╯ ╰──────╯ ╰───────╯ ╭───────╮ ╭──────╮ │ Beta │ ←╮ │ Alpha │←─── a2 ╰───────╯ │ │ │ ╰──┼─b2 │ ╰──────╯ ========================================== 整理 3 : 由於由上角的 Alpha 可能被回收,所以 b2 的指向可以忽略 Alpha.b1 ──╮ ╭──────╮ │ │ Alpha │ (這是第 12 行產生的) ↓ │ │ ╭───────╮ │ b2 │ │ Beta │ ╰──────╯ ╰───────╯ ╭───────╮ ╭──────╮ │ Beta │ ←╮ │ Alpha │←─── a2 ╰───────╯ │ │ │ ╰──┼─b2 │ ╰──────╯ 這樣就很清楚了,不過不要誤會,右上角的 Alpha 中,還是有 指向其他物件的變數在,只是這樣整理比較好觀察。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.174.21 ※ 編輯: darkk6 來自: 114.47.174.21 (10/25 00:03)
mserway:謝謝d大的圖文解說! 這個圖示畫得很棒,我偷偷筆記一下XD 10/25 00:30
※ 編輯: darkk6 來自: 114.47.174.21 (10/25 01:02)
cobrasgo:佛心來的,畫圖耶… 10/25 02:40
PsMonkey:現在都是來拼美術能力的就是了...... [核爆] 10/25 07:59
sbrhsieh:一開始 Alpha.b1 就不要畫在 Alpha instance 裡比較妥當 10/25 21:01
swpoker:這種就是要畫圖就很清楚了啦 10/26 09:38