什么是类加载
java8之后jvm虚拟机内存模型
堆内存模型
对象优先在Eden区分配,当Eden区没有足够空间分配时,虚拟机将发起一次minorGC
Minor GC:非常的频繁,一般回收速度也比较快
Major GC:一般比MinorGC慢十倍以上
大对象一般都直接进入老年代
为了避免大对象分配内存的赋值操作而降低效率
大对象就是需要大量连续内存的对象,jvm可以通过参数设置大对象的大小,超过设置值的大小就会直接进入老年代
这个参数只在(serial和parNew收集器下有效)
长期存活的对象进入老年代
虚拟机会给每个对象一个年龄计数器
如果对象在Eden区出生并经过第一次Minor GC能够存活并且能被survivor区容纳的话,对象移动到survivor区,年龄等于1,每活过一次Minor GC 年龄就+1,当年龄增加到一定程度,默认到15岁,对象就被晋升到老年代
如果survivor区放不下,对象会部分挪到老年代,部分放在survivor区
survivor:色歪我
Eden区和survivor区默认比例8:1:1
java虚拟机如何判定对象是否存活
对象引用分类
分代回收算法
serial收集器
单线程收集器
新生代采用复制算法,老年代采用标记整理算法
优点:简单而高效
parNew收集器
多线程版的serial收集器