每經歷一次yong GC或者minor GC存活下來的對象age+=1。當age=15時進入老年區。
提升掃描效率:
web
產生矛盾:經歷一次yong GC或者minor GC後內存會形成不連續,也就是咱們說的內存碎片多,因此當建立一個很是大的新的對象時就會找不到連續的內存空間裝下(觸發yong GC或者minor GC)。svg
解決矛盾:
劃分爲eden區和s區。
分析:在每一次經歷yong GC或者minor GC後存活的對象都會進入s區,而且在s區是排好順序的,這樣eden區就有足夠的連續的空間留給新的大的對象了。
產生矛盾:每經歷一次yong GC或者minor GC後s區的對象也會被回收,這時在s區也會產生碎片,從eden區進來的對象可能太大而找不到連續的空間裝下。
操作系統
解決矛盾:
將s區分爲s0區和s1區。
分析:每經歷一次yong GC或者minor GC後在s0/s1區的對象就會複製進入s1/s0區,同時在進入s1/s0區後是排序的,所以經歷yong GC或者minor GC後從eden區存活的對象就會有足夠的連續的空間裝下了。
線程
緣由:新生代不夠用。
設計
緣由:eden區佔比少,建立新對象因內存不太夠而致使裝不下,就會觸發young GC回收對象,這樣就會浪費咱們的對象,同時,頻繁的GC會佔用操做系統線程資源,由於要遍歷咱們的young區。xml