JVM提問----個人筆記,不喜勿噴

  • 什麼時候會嘗試觸發Minor GC

新生代內存區域基本快滿了,再次分配對象的時候,發現空間不足

  • 觸發Minor GC之前會檢查老年代大小?
  1. 檢查老年代可用內存空間,是否大於新生代所有對象的總大小,如果大於新生代所有對象,就可以發起Minor GC
  2. 老年代可用空間小於新生代的所有對象大小,檢查'-XX:HandlePromotionFailure'的參數是否設置,如果設置了,就檢查老年代的內存大小,是否大於之前每一次Minor GC後進入老年代對象的平均大小,如果大於就進行Minor GC
  3. 如果沒有設置'-XX:HandlePromotionFailure'參數,此時就會觸發一次Full GC,儘量騰出一些空間,然後再執行Minor GC
  • 什麼時候在Minor GC之前會觸發一次Full GC

Minor GC後的對象太多,無法放入 survivor區

  • Full GC的算法是什麼?

標記整理算法

  • Minor GC之後可能對應哪幾種情況?
  1. 剩餘存活的對象大小,小於survivor區,此時存活對象進入survivor區
  2. 剩餘存活的對象大小,大於survivor區,但是小於老年代可用空間,直接進入老年代
  3. 剩餘存活的對象大小,大於survivor區,大於老年代可用空間,就會觸發Full GC
  • 哪些情況下Minor GC的對象會進入老年代?
  1. Minor GC 15次的對象會進入老年代,就是說超過年齡的對象
  2. 大對象
  3. Minor GC之後剩下的對象超過survivor區大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章