Java堆中划分为两部分:
1.新生代
新生代占比老年代约为1:2.
新生代分为:eden(伊甸园),from区,to区;占比为8:1:1.
新创建的对象放入Eden,满了后,会做一次minor gc(gc root算法),将有引用的对象移入from区,没有引用的对象回收掉,每做一次minor gc,也会将from区中的有引用的对象进行计数,当超过一定次数,仍然有引用,则移入老年代。
from区满时,会回收一次,并将有引用的对象全部移入to区,来回切换。
2.老年代
老年代中内存超过限制时,会触发full gc,此操作会stop the world(STW),暂停程序的运行,尽量较少full gc.
使用javavisualvm可以观察。