zoukankan      html  css  js  c++  java
  • jvm(3)

    分代回收理论:
    1 大部分对象都是朝生夕死
    2 小部分对象可以熬过多次Gc
    3 由于上诉情况,所以将容易回收的放到了新生代,难回收的放到了老年代

    Gc的种类:
    1 young gc
    2 old gc

    垃圾回收算法
    1 复制算法:
    1)新生代用的都是复制算法,但是利用率只有一半,所以引入了appel式的回收
    2)将新生代分为 eden ,from ,to,每次回收时,将满足可达性的复制到from,第二次时,复制到to,同时将from的放到to,依次反复
    3)eden:from:to 8:1:1
    4) 由于分配担保的存在,所以不需要考虑装不下的问题

    标记清除算法 mark-sweep
    1 先标记再删除
    2 缺点:会产生内存碎片,二次扫描效率低

    标记整理算法 mark-compact
    1 优点:没有内存碎片
    2 缺点: 指针调整

    jvm中常见的垃圾回收器
    1:单线程
    新生代 serial
    老年嗲 serial old
    2:多线程
    新生代 parnew parallel scavenge
    老年代 parallel old

    serial/serial old
    1: 单线程
    2:userThread -> serial -> userThread ->serial old ->userThread
    3: stw 过长
    4:只适合俩百兆以内的内存回收

    parallel scavenge /paralel old
    1:多线程
    2:吞吐量大,适合几个G的
    3:stw时间不短

    cms
    1 初始标记:标记gcroot 可以直接关联到的对象
    2 并发标记:和用户线程一起运行,时间长,对Gcroot开始关联的所有对象可达性分析
    3 重新标记:标记在并发标记期间产生的垃圾
    4 并发清楚:和用户线程一起运行,清楚标记的垃圾
    5 缺点:cpu敏感,产生内存碎片,浮动垃圾只能下次清理
    6 mark-sweep:1)可以减少stw时间,2)由于是并发,所以修改用户线程的引用的位置会导致出问题

    garbage first(g1)
    1:设计思想的改变,将所有空间划整为零,分成大小相同的空间,这样对stw的时间就可以预测了
    2:g1 分为 eden survivor old humongous(但占用空间大于region的一半就放到这里)

  • 相关阅读:
    SQL中的聚合函数
    vs移动团队项目集合
    网页变量的赋值示例
    PRD、MRD、BRD的含义
    w3cschool中jQuery测试结果总结
    sql队伍的胜负情况
    winform中获取当前周次
    select2 的使用
    layui layer table 常见问题
    spring websocket tomcat was websphere9.0 Multiple Endpoints may not be deployed to the same path
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/13385315.html
Copyright © 2011-2022 走看看