《垃圾回收的演算法與實作》第1章學習GC之前

垃圾回收系列連載:
第 1 章 學習GC之前
第 2 章 GC標記-清除演算法
第 3 章 參考計數法
第 4 章 GC復制演算法
第 5 章 GC標記-壓縮演算法
第 6 章 保守式GC
第 7 章 分代垃圾回收
第 8 章 增量式垃圾回收
第 9 章 RC Immix 演算法
第 10 章 Python 的垃圾回收
第 11 章 DalvikVM 的垃圾回收
第 12 章 Rubinius 的垃圾回收
電子書下載鏈接
第 1 章 學習GC之前
初識GC
- GC的定義
GC,垃圾回收 就是把不要的東西丟掉,在程式里面理解就是找到不再使用的記憶體空間,然后回收,后面可以再此使用回收掉的記憶體, - 為什么需要GC
C++里面是程式員自己管理記憶體,操作指標,但是操作指標特別危險,會出現野指標,空指標,還有程式員要明確什么時候釋放需要自己管理,Java就考慮到C++程式員的苦處,就想到讓語言本身去解決記憶體管理的問題,你們上層不用管,我來兜底,算是一種語言缺陷的補充, - GC的發展
每項技術都會有它的發展,都會有幾種策略的競爭,GC一開始是 標記-清除法,后面來了參考技術法,然后來了GC復制演算法,都是在解決前人的缺陷,當然也會帶來新問題,都有自己的長處和短處,
前置知識點
關于C++ 和 java基礎的知識點這里不做贅述,
-
物件頭
物件頭會包含 物件的大小 物件的種類的資訊 -
物件域
域中的資料型別分為兩種 指標和非指標,這里就是java的資料型別要么是常規資料型別 要么是物件參考的意思,

-
mutato
就是程式的意思, -
堆
就是參考物件的指標指向的存盤位置, java里面的物件的物體都存在堆中, -
根
根就是指向物件的指標的起點,呼叫堆疊、暫存器、全域變數都是根, 這些根都是活動物件,

-
吞吐量
下圖所示,HeapSize/(A+B+C) 就是吞吐量,管理越多的記憶體吞吐量越大,GC耗時越小吞吐量越大,

-
最大暫停時間
這個是針對標記清除來說,因為標記和清除是要暫停的,不暫停會改變參考物件,那么標記的非活動物件就可能臟了, -
堆使用效率
這個是針對復制演算法的,因為有一半的堆空間使用不到,那么堆使用效率就很低了, -
訪問局限性
這里就是訪問的效率,跟語言無關,就是物件的參考關系說明他們是有可能會被連續訪問,那么應該在記憶體中連續,這樣訪問速度會更快,那么有的GC演算法會考慮到把有關聯的參考物件放在一起,比如復制演算法,計算參考就在拷貝,那么就會放在一起,
請期待 “第 2 章 GC標記-清除演算法”

個人簡介:高級開發工程師,興趣和領域(Unity、Unreal、cocos creator、安卓終端開發、ios終端開發、音視頻開發、圖形學),歡迎加W:wlxklyh 探討問題,(歡迎star:https://github.com/wlxklyh/SoftRenderer)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/184950.html
標籤:其他
上一篇:怎么才能制作一個比較好的網站
下一篇:4G網路無法訪問指定的ip
