JVM垃圾回收机制
JVM的组成
程序计数器
执行class文件到达哪一行了,线程私有的,不会发生内存泄漏。
堆
内存管理最大的一部分,当程序里new出一个对象,或者声明一个数组时,都会在堆内存中申请出一块空间。
分为新生代、年老代、永久代。
发生异常时是因为往里面添加的对象太多。
虚拟机栈
线程私有,与线程共存。
发生异常时是因为方法进去后无法出栈。
本地方法栈
直接跟操作系统打交道,不加载Java方法,与虚拟机栈互相调用。
方法区
内存分配与回收策略
判断对象已死的算法
引用计数器算法(Java中现在不使用)
可达性分析算法(目前在使用)
再谈引用
垃圾回收算法
标记-清除算法
标记-整理算法
复制算法
分代垃圾回收
垃圾收集器
Serial收集器
PerNew收集器(Serial收集器的多线程版本)
Parallel Scavenge收集器
Serial Old收集器
Serial收集器的老年代版本。
Parallel Old收集器
Parallel Scavenge收集器老年代版本。