java架构知识总结--jvm相关(回收部分)

2019-03-23  本文已影响0人  爱编程的凯哥

目的

回收机制整理

知识概括:

必须掌握知识概括

  1. 标记算法

    1. 引用计数法
    2. 分析可达性算法
      gc root有:
      • 虚拟机栈
      • 静态方法
      • 常量
      • jni
  2. 清理收集算法

    1. 标记-清除算法
      优:简单,快速
      缺:产生内存碎片
    2. 复制算法
      优:相当于维护两个空间链表,没有内存碎片
      缺:空间大,耗时长
    3. 标记-整理算法
      优: 在标记清除算法基础上,添加整理模块,减少内存碎片
      缺:耗时长
    4. 分代收集算法
      1. 年轻代:
        新生代内存按照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
      2. 年老代
      3. 持久代
  3. 垃圾回收器组合

年轻代 年老代 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;

详细内容,参考大神博客:

  1. 回收整理:https://www.cnblogs.com/1024Community/p/honery.html#31
  2. cms回收 资料:https://blog.csdn.net/zqz_zqz/article/details/70568819
  3. g1回收参考 https://blog.csdn.net/zhou2s_101216/article/details/79202893
上一篇下一篇

猜你喜欢

热点阅读