3 4 HotSpot演算法實現

2021-07-22 16:35:33 字數 531 閱讀 2540

o

opmap

在hotspot

的實現中,是使用一組稱為

oopmap

的資料結構來達到這個目的的,在類載入完成的時候,

hotspot

就把物件內什麼偏移量上是什麼型別的資料計算出來,在

jit編譯過程中,也會在特定的位置記錄下棧和暫存器中哪些位置是引用。這樣,

gc在掃瞄時就可以直接得知這些資訊了。

安全點只是在「

特定的位置

」記錄了這些資訊,這些位置稱為安全點(

safepoint

),即程式執行時並非在所有地方都能停頓下來開始

gc,只有在到達安全點時才能暫停。

安全區域(

safe region

)安全區域是指在一段**片段之中,引用關係不會發生變化。在這個區域中的任意地方開始

gc都是安全的。我們也可以把

safe region

看做是被擴充套件了的

safepoint

第三章 Hotspot演算法實現

列舉根節點 可達性分析演算法中,需要根據gc roots節點下找出所有存活的引用 例如常量或者靜態屬性 與執行上下文 例如棧幀在巨集的本地變數表 gc roots中的方法區可能會有數百兆,如果逐個檢索這裡的引用,那麼必然會消耗很多時間。可達性分析演算法堆執行時間的敏感還體現在gc停頓上,因為這項分析...

演算法高階3 4

題目一 換錢的方法數 題目 給定陣列arr,arr中所有的值都為正數且不重複。每個值代表 一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定一 個整數aim代表要找的錢數,求換錢有多少種方法。舉例 arr 5,10,25,1 aim 0。組成0元的方法有1種,就是所有面值的貨幣都不用。所以返回1。...

3 4棧的鏈式實現

鏈棧即採用鍊錶作為儲存結構實現的棧。為便於操作,這裡採用帶頭結點的單鏈表實現棧。由於棧的插入和刪除操作僅限制在表頭位置進行,所以鍊錶的表頭指標就作為棧頂指標,如下圖所示。在上圖中,top 為棧頂指標,始終指向當前棧頂元素前面的頭結點。若 top next null,則代表棧空。採用鏈棧不必預先估計棧...