物件為什麼活在記憶體的解析

SpeedVan發表於2011-11-03
JVM上物件是以引用來相互關聯,而引用與地址相關,但與key無關。每次載入同一個key/value會得到不同的引用,所以物件不能隨便死亡,一旦死亡就脫離關係。我們腦海中物件的邏輯關係是key中的關係,並非引用關係,所以key關係與引用關係相一致的時候,就是在記憶體中。

按道理,我們是應該在key關係中找到目標key(key就是實體),再透過這個key來獲得引用,再獲得相應物件,這樣物件關係就不會受限於引用。但在

a{
   b

   getb(){
      return b;
   }
}
<p class="indent">


這樣的程式碼中,b儲存的是引用,並非key,所以在能夠保持物件關係中,最後一層就是記憶體。

Key指引邏輯關係,引用指引記憶體關係。過去所謂的物件持久化,即是去除引用關係,儲存邏輯關係。而物件還原時,需要重塑記憶體關係,而剛好重塑記憶體關係是最費勁,最沒效率的,很明顯要解決這樣的問題,就是以記憶體為基本活動空間,把記憶體關係重塑儘可能迴避掉,如只在啟動載入時。

最後可以得出,判斷物件活動的地方,可透過物件關係的實現手段(引用),來判斷物件的存活地方(記憶體)。

相關文章