垃圾分代回收机制
针对堆内存而言的。当调用构造方法的时候,创建好一个对象,因为Java中对每种数据类型都明确的给定了大小,在创建对象的时候,会自动计算大小分配内存,所以在内存的回收和释放的时候也是由Java自己管理。
对象在堆内存中存储,对象在使用完成之后会在不定的某个时刻被垃圾回收器(GC --- Garbage Collector)解析掉。--回收过程无法手动控制
堆内存分为了老生代和新生代。新生代划分为伊甸园区和幸存区。
一个对象刚创建的时候是放到新声代的伊甸园区,如果这个对象在栈内存中没有引用,那么会在扫描的时候被解析,释放内存;如果经过一次扫描依然存活没有释放内存,会将其移入新生代的幸存区,幸存区的扫描频率略低于伊甸园区;如果在幸存区经过多次扫描依然没有被释放,会被放入老生代,老生代的扫描频率远远低于新生代的。老生代中的对象一旦被回收,可能会造成程序的卡顿或者崩溃。
发生在新生代的回收称之为minor GC(Garbage Collect)---初代回收
发生在老生代的回收称之为full GC---完全回收
类加载器
启动类加载器/引导类加载器
扩展类加载器
系统类加载器
***双亲委派机制