垃圾回收

一、 垃圾回收

  1. 如何判定对象为垃圾回收?
     1. 引用计数法
     2. **可达性分析法**
  2. 如何回收?
     1. 回收策略
         1. 标记-清除算法
         2. 复制算法
         3. 标记-整理算法
         4. 分代收集算法
     2. 垃圾收集器    
         1. Serial
         2. Parnew
         3. CMS
         4. **G1**
  3. 何时回收?
     1. 引用计数法
     在对象中添加一个引用计数器,引用这个对象的时候计数器+1,引用失效时计数器-1。
     打印gc信息:
         1. -verbose:gc
         2. -xx:+PrintGCDetails
     2. 可达性分析法
     GCRoots的路径能否连接到下一级,不可以则将下一集标记为垃圾
     作为GCRoots的对象
         1. 虚拟机栈
         2. 方法区的类属性所引用的对象
         3. 方法区中常量所引用的对象
         4. 本地方法栈中引用的对象
    二、 回收算法
  • 标记-清除算法
    效率问题
    空间问题:空间不连续
  • 复制算法(分区移动):提高了标记-清除算法的性能
    新生代
      Eden 伊甸园
      Survivor 存活区
      Tenured Gen
    老年代
  • 标记-整理算法
    移动再清除
  • 分代收集算法(复制算法(新生代)+标记-整理算法(老年代))
    三、 垃圾回收器
  1. Serial收集器
    最基本、发展最悠久
    单线程
    桌面应用

  2. ParNew收集器

  3. Parallel Scavenge收集器
    复制算法(新生代收集器)
    多线程收集器
    达到可控制的吞吐量

    吞吐量:CPU用于运行用户代码的时间与CPU消耗的总时间的比值
    吞吐量=(执行用户代码时间)/(执行用户代码时间+垃圾回收时间)
    -XX:MaxGCPauseMills 垃圾收集器最大停顿时间
    -XX:GCTimeRation 吞吐量大小

  4. CMS(Concurrent Mark Sweep)垃圾收集器
    工作过程:

     初始标记
     并发标记
     重新标记
     并发清理

    优点:

     并发收集
     低停顿

    缺点:

     占用大量的CPU资源
     无法处理浮动垃圾
     Concurrent Mode Error
     空间碎片
  5. G1收集器
    优势

     并行与并发
     分代收集
     空间整合
     可预测的停顿

    步骤

     初始标记
     并发标记
     最终标记
     筛选回收
全部评论

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务