目录
存储在 JVM 中的 Java 对象可以被划分为两类
一类是生命周期较短的瞬时对象,这类对象的创建和消亡都非常迅速
另一类对象的生命周期却非常长,在某些极端的情况下还能够与 JVM 的生命周期保持一致
Java 堆区进一步细分,可以分为年轻代(YoungGen)和老年代(OLdGen)
其中年轻代又可以划分为 Eden 空间、Survivor0 空间和 Survivor1 空间(有时也叫做 from 区、to 区)
默认 -Xx:NewRatio=2,表示新生代占 1,老年代占 2,新生代占整个堆的 1 / 3
可以修改 NewRatio 的值来修改堆结构占比,比如 -Xx:NewRatio=4,代表新生代占 1,老年代占 4,新生代占整个堆的 1 / 5
在 HotSpot 中,Eden 空间和另外两个 Survivor 空间缺省所占的比例是 8:1:1
当然开发人员可以通过选项 “-Xx:SurvivorRatio” 来调整这个空间比例
这里有必要说明一下,在实际情况中,空间缺省占比并不是理论值 8:1:1,而是 6:1:1
几乎所有的 Java 对象都是在 Eden 区被 new 出来的
绝大部分的 Java 对象的销毁都在新生代进行
IBM 公司的专门研究表明,新生代中 80% 的对象都是 “朝生夕死” 的
可以使用选项 “-Xmn” 设置新生代最大内存大小(一般使用默认值)