垃圾分代收集
Full GC : 针对的是整个堆。包括:新生代、老年代、永久代。
针对HotSpot VM 的实现,他里面的GC其实准确分类只有两大类:
部分收集器(Partial GC):
- 新生代收集器(Minor GC/ Yong GC):只对新生代进行垃圾收集
- 老年代收集器(Major GC/Old GC):只对老年代进行垃圾收集。
- 混合收集器(Mixed GC):对整个新生代和部分老年代进行垃圾收集。
整堆收集(Full GC):收集整个Java堆和方法区。
堆的基本结构
对象默认存活年龄
- 晋升年龄并不都是15,这个是要区分垃圾收集器的,CMS就是6,The default value is 15 for the parallel(throughput) collector
对象分配
对象优先在eden区分配
大对象直接进入老年代
- 大对象就是需要大量连续内存空间的对象(比如:字符串、数组)。为了避免为大对象分配内存空间时由于分配担保机制带来的复制而降低效率
长期存活的对象将进入老年代
- -XX:MaxTenuringThreshold
动态对象年龄判定