在大多数情况下,对象会在新生代的Eden区分配,当 Eden 区没有足够空间进行分配时,虚拟机将发起一次Minor GC。
Minor GC/Young GC:指发生新生代的的垃圾收集动作,Minor GC非常频繁,回收速度一般也比较快。
Major GC/Full GC:一般会回收老年代 ,年轻代,方法区的垃圾,Major GC的速度一般会比Minor GC的慢10倍以上
大量的对象被分配在eden区,eden区满了后会触发minor gc,大多数对象会成为垃圾被回收掉,剩余存活的对象会被挪到为空的那块survivor区,下一次eden区满了后又会触发minor gc,把eden区和survivor区垃圾对象回 收,把剩余存活的对象一次性挪动到另外一块为空的survivor区,因为新生代的对象都是朝生夕死的,存活时间很短,所 以JVM默认的8:1:1的比例是很合适的,让eden区尽量的大,survivor区够用即可。
JVM默认有这个参数**-XX:+UseAdaptiveSizePolicy**(默认开启),会导致这个8:1:1比例自动变化,如果不想这个比例有变 化可以设置参数**-XX:-UseAdaptiveSizePolicy**
(3)大对象直接进入老年代
大对象就是需要大量连续内存空间的对象(比如:字符串、数组)。通过JVM参数 -XX:PretenureSizeThreshold 可以