java架构知识总结--jvm相关(回收部分)
2019-03-23 本文已影响0人
爱编程的凯哥
目的
回收机制整理
知识概括:
必须掌握知识概括
-
标记算法
- 引用计数法
- 分析可达性算法
gc root有:- 虚拟机栈
- 静态方法
- 常量
- jni
-
清理收集算法
- 标记-清除算法
优:简单,快速
缺:产生内存碎片 - 复制算法
优:相当于维护两个空间链表,没有内存碎片
缺:空间大,耗时长 - 标记-整理算法
优: 在标记清除算法基础上,添加整理模块,减少内存碎片
缺:耗时长 - 分代收集算法
- 年轻代:
新生代内存按照8:1:1的比例分为一个eden区和两个survivor(survivor0,survivor1)区。一个Eden区,两个 Survivor区(一般而言)。大部分对象在Eden区中生成。回收时先将eden区存活对象复制到一个survivor0区,然后清空eden区,当这个survivor0区也存放满了时,则将eden区和survivor0区存活对象复制到另一个survivor1区,然后清空eden和这个survivor0区,此时survivor0区是空的,然后将survivor0区和survivor1区交换,即保持survivor1区为空, 如此往复。
- eden
- survivor0
- survivor1
- 年老代
- 持久代
- 年轻代:
- 标记-清除算法
-
垃圾回收器组合
年轻代 | 年老代 | jvm参数 |
---|---|---|
Serial | Serial | -XX:+UseSerialGC |
Parallel Scavenge | Serial | -XX:+UseParallelGC -XX:-UseParallelOldGC |
Parallel Scavenge | Parallel Old | -XX:+UseParallelGC -XX:+UseParallelOldGC |
Parallel New或Serial | CMS | -XX:+UseParNewGC -XX:+UseConcMarkSweepGC |
G1 | -XX:+UseG1GC |
垃圾回收器从线程运行情况分类有三种
串行回收,Serial回收器,单线程回收,全程stw;
并行回收,名称以Parallel开头的回收器,多线程回收,全程stw;
并发回收,cms与G1,多线程分阶段回收,只有某阶段会stw;
详细内容,参考大神博客: