1.新生代與老年代
1.存儲在JVM
中的Java對象可以被划分為兩類:一類生命周期很短,這類對象的創建和消亡很快;一類生命周期很長,極端情況下,還能夠與JVM的生命周期保持一致。
2.JVM堆區進一步細分為新生代和老年代。
3.年輕代又可以划分為Eden
區、Survivor0
區和Survivor1
區(有時候也叫做from
區、to
區)
2.新生代和老年代的比例設置
1.-XX:NewRatio=2
表示新生代占1
,老年代占2
。則新生代占整個堆的1/3
。(這個參數一般不會使用)
2.默認情況下,新生代和老年代的比例是1:2
。
3.在HotSpot
中,Oracle JVM
官網說Eden
區和另外兩個Survivor
空間默認所占的比例是8:1:1
。(實際上默認並不是8:1:1
,如下圖,Eden區:Survivor0:Survivor1: = 11264 : 2048 : 2048 = 5.5 : 1 : 1
,不同的情況,可能比例不一樣,如果需要設置成8:1:1
的話,自己直接設置-XX:SurvivorRatio=8
就可以了。)
4.可以通過-XX:SurvivorRatio
調整這個空間的比例,默認值是8
。
5. -XX:-UseAdaptiveSizePolicy
:關閉自適應的內存分配策略 (暫時用不到)
6. 幾乎所有的對象都在Eden
區別new
出來。
7. 絕大部分的Java
對象都在新生代被銷毀
8.-Xmn
:設置新生代的空間的大小。 (一般不設置)