對象如何晉升到老年代?


對象優先在新生代的 eden 區分配內存,但是也並不絕對,下面幾種情況對象會晉升到老年代

  • 大對象直接進入老年代。比如很長的字符串,或者很大的數組等。
  • 長期存活的對象進入老年代。在堆中分配內存的對象,其內存布局的對象頭中(Header)包含了 GC 分代年齡標記信息。如果對象在 eden 區出生,那么它的 GC 分代年齡會初始值為 1,每熬過一次 Minor GC 而不被回收,這個值就會增加 1 歲。當它的年齡到達一定的數值時(jdk1.7 默認是 15 歲),就會晉升到老年代中。
  • 動態對象年齡判定。當 Survivor 空間中相同年齡所有對象的大小總和大於 Survivor 空間的一半,年齡大於或等於該年齡的對象就可以直接進入老年代,而不需要達到默認的分代年齡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM