概念:
- Java GC:garbage collec,垃圾收集,回收
- GC是对JVM中的内存进行标记和回收,Sun公司的JDK用的虚拟机都是HotSpot,对象化的实例是放在heap堆内存中的,这里讲的分代收集也是指对堆内存的回收。
- vm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor
Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm
Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。 - 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具 备朝生夕灭的特性,所以 Minor GC
非常频繁,一般回收速度也比较快。 - 老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常 会伴随至少一次的
Minor GC(但非绝对的,在 ParallelScavenge 收集器的收集策略里 就有直接进行 Major GC 的策略选择过程)
。MajorGC 的速度一般会比 Minor GC 慢 10 倍以上。
分代收集原理:
GC的分代收集分为:年轻代、老年代、永久代。(方法区是被当做永久代的,不过JDK1.6后将被取消掉了)
年轻代