新生代:
新生代分为三个区域 一个eden区两个survivor区(from 与 to); 通常情况下 新创建的对象分配在新生代的 eden区上 ,少数情况下也可能直接分配到老年代中; java虚拟机每次使用新生代中的eden区和其中的一块survivor(from)区, 在经过一次gc垃圾回收后 会将eden区与survivor(from)区中的存活的对象 复制到另一块 survivor(to) 区中(这里使用的是复制算法进行GC),最后清理掉eden 与刚才用过的survivor区, 将此时survivor(to)区中的对象年龄设置为1 每一次gc 存活下来的对象 年龄都会+1, 当对象年龄达到某个值时(默认15)会将对象移到老年代中;
还有一种情况 当gc完 将对象复制到 另一块survivor区时 没有足够空间存放 上一次gc活下来的对象 就会将这些对象直接存入老年代中
老年代:
老年代里边对象是存活时间较久 因此老年代使用标记整理算法进行GC; 当老年代内存满的时候会出发一次GC,回收老年代与新生代不在被使用的对象资源
永久代:
永久代的存在方法区的类数据信息