1. 程式人生 > >java中什麽樣的對象能夠進入老年代

java中什麽樣的對象能夠進入老年代

需要 max 適應 一次 大對象 直接 對象 uri 一半

1.大對象:所謂的大對象是指需要大量連續內存空間的java對象,最典型的大對象就是那種很長的字符串以及數組,大對象對虛擬機的內存分配就是壞消息,尤其是一些朝生夕滅的短命大對象,寫程序時應避免。

2.長期存活的對象:虛擬機給每個對象定義了一個對象年齡(Age)計數器,如果對象在Eden出生並經過第一次Minor GC後仍然存活,並且能被Survivor容納的話,將被移動到Survivor空間中,並且對象年齡設為1,。對象在Survivor區中每熬過一次Minor GC,年齡就增加1,當他的年齡增加到一定程度(默認是15歲), 就將會被晉升到老年代中。對象晉升到老年代的年齡閾值,可以通過參數-XX:MaxTenuringThreshold設置。

3.動態對象年齡判定:為了能更好地適應不同程度的內存狀況,虛擬機並不是永遠地要求對象的年齡必須達到了MaxTenuringThreshold才能晉升到老年代,如果在Survivor空間中相同年齡的所有對象大小的總和大於Survivor空間的一半,年齡大於或等於年齡的對象就可以直接進入老年代,無須等到MaxTenuringThreshold中要求的年齡。

java中什麽樣的對象能夠進入老年代