1.三種基本的垃圾回收算法
1>標記-清除法
①先將從樹根開始,可以到達的對象標記為可達(JVM中的對象們存儲為一顆樹)
②將沒有標記的對象清除掉
缺點:會產生大量內存碎片
2>復制算法(新生代)
①先將a區域中的可達對象標記,然后復制到b區,再刪除a區全部對象
優點:沒有碎片空間,速度快
缺點:浪費大量空間(50%)
3>標記-壓縮算法(老年代)
將可達對象標記,清除不可達對象,向左壓縮
優點:不浪費空間
缺點:慢
新生代回收方式:
首先新生代分為三個區:eden、s1、s2(8:1:1)
新創建的對象會先入eden,一段時間后進行gc,gc時先將可達的標記,并復制到s1中,然后刪除eden中的對象(全部),之后在gc時標記s1與eden中的的可達對象,復制到s2中,刪除eden與s1中的全部對象…
【經過多次gc仍然存活的進入老年代;大存儲空間對象直接進入老年代】
老年代使用標記-壓縮算法:
略