回覆列表
  • 1 # 小宇堂

    哈哈,這個比喻我喜歡!但這兩者有很多模式上的不同!

    軟體開發上的GC執行緒

    Garbage Collector是計算機軟體領域的一種記憶體釋放機制,是記憶體空間的高階管理機制(不是底層的)。很多支援高階語言的執行庫環境都有這樣的機制,例如.net 虛擬機器,Java虛擬機器等等。虛擬機器會給每個程序分配一個虛擬的記憶體空間,然後在這個虛擬的記憶體空間當中來分配資料的存放。當某些資料不再使用的時候,這些資料的地址和控制代碼(就像箱子)就會被指派給GC暫存一段時間,直到記憶體不足時,GC管理程式會透過底層記憶體管理的層層呼叫釋放這部分空間供新的資料使用。GC的主要目的是保證記憶體的有序使用,防止程式隨便讀取或佔用無主的不再使用的資料,並延時最佳化地有序地回收利用記憶體空間。

    黑洞不是垃圾桶!

    而黑洞,以我的理解,實際上是時空的聚集,可以想象為把時空的座標格子收攏到到一個極限,這個極限就是史瓦西半徑,但實際上這裡涉及到兩種不同的座標或者度規體系。一種是時空的座標,另一種是我們認知的座標。前者是物理的時空實座標(度規),而後者是人類直覺認知的虛座標(度規)。

    質量實際上是時空“蜷縮”的表象(可以認為是蹦床上的一個凹陷,質量越大的凹陷越深),蹦床上的兩個“凹陷”自發傾向於合為一個——這就是引力現象。而黑洞就是大量凹陷合併形成的極端凹陷——已經無法再凹陷下去了,看起來就像是蹦床上的一個洞。時空“蹦床”上的任何質量的物體都可能形成如此極端的深洞,只要你讓它縮小到一個足夠小的半徑,此半徑就是該質量的“史瓦西半徑”。質量一旦落進這個洞,只會略微擴大一下這個半徑,然後經由緩慢的霍金輻射逐漸輻射一點點出去。一般來說,大型黑洞會越來越大,而小黑洞會因霍金輻射慢慢消亡。

    兩者的對比

    綜合上面對兩種現象的簡單分析來說,GC和黑洞的原理有很大的不同,但可以做一些類比。

    ·黑洞並不能視為宇宙中的垃圾收集器,它吸收質量和能量是隨機,只要碰上就來者不拒,它依據的是時空的收縮和凝聚法則——引力法則。它只是時空的凝聚體,說不定在黑洞裡面存在著以另外一種規則運作的時空。

    ·而GC是有序地回收記憶體中不用的資料,GC內的資料不會越來越多,以既定的垃圾回收邏輯規則來處理大片的資料,然後騰出空間來,它依據的是虛擬機器預設的回收規則——GC演算法。GC內也有它內部的一些運作規則。

    ·黑洞有我們認為的“它的虛尺寸”——史瓦西半徑。GC也有它的空間上限。

    如果腦洞大一點,說宇宙就是個虛擬機器,這並不是不可以,只是這樣的虛擬機器就不是今日我們能探討的了,只能猜想或幻想,進一步探討沒有意義。就像記憶體中的一段程式,讓它分析它所在的這款記憶體晶片是在哪裡生產的有什麼意義呢?

  • 中秋節和大豐收的關聯?
  • 軟體app閃退是怎麼回事?