jvm 垃圾回收器 串行 和 吞吐量优先 还有 响应时间优先 G1 GC

        串行( Serial GC垃圾回收器 ):

               串行是一个时代过了很久的一个垃圾回收器,串行被jdk1.3所支持

               串行是一个单线程(一个人工作)

              串行的工作流程:

                        新生代内存达到一定的阈值了就引发了垃圾回收( minor GC )把标记的回收掉

                        然后复制到 这时就会阻塞线程(STW)把其他线程也进行阻塞 然后一个垃圾回收线程进行 垃圾回收      垃圾回收完之后就 恢复正常运行

 

        吞吐量优先(Parellel GC 垃圾回收器)并行回收: 会STW( stop the word)

                        

            jvm的参数:顾名思义

                -XX:+UseParallelGC (新生代) -XX:+UseParallelOldGC (老年代) (这是个开关 开启任意一个就会把另一个开启)

                -XX:+UseAdaotiveSizePolicy ( 用来动态的管理堆内存中 的 新生代和老年代 还有 伊甸园(Eden) 幸存区 (survivor) )

                -XX:+ParallelGCThreads=n ( 用来设置线程数量的)

                -XX:+GCTimeRatio  吞吐量的计算公式 :  吞吐量 = 用户线程 / (用户线程 + 垃圾回收时间)

   比如: 回收垃圾100分钟只有1分钟来回收垃圾

                -XX:+MaxGcpauseMillis=ms (每次回收的时间 默认200ms)

                吞吐量优先是一个多线程(多个人一起工作)

                吞吐量优先是jdk 1.8 引入进来的 并且还是jdk8默认的垃圾回收器

             吞吐量优先的基本流程:

                      首先内存不足时就会 引发垃圾回收 Minor GC 把一些没有被GC Roots 所引用的对象标记起来,然后就复制到 幸存区中
                 

        响应时间优先(CMS GC垃圾回收器)并发回收:只要是并发 都不会stop the  word(STW)暂停其他线程

           响应时间优先是一个多线程(多个人一起工作)

           响应时间优先的执行流程:

              当老年代的内存不足时 会进入安全点 然后进行初始标记(会STW)暂停其他线程 ,

              完了之后就进行并发标记(因为是并发标记  用户线程和垃圾回收线程并发执行)不会干扰其他用户线程 过了这并发标记之后

              就会进行重新标记(会STW)在做重新标记之前会把新生代的 垃圾做一次垃圾回收  免得全部都重新标记一下就效率就低了很多

              最后做一个并发清理 不会干扰到其他用户线程 

              

        G1 GC( garbage  first  垃圾回收器 )区域分代:每个区域都划分为相同大的区域

            分别为3个部分 young Collection -->> young Collection + Concurrent Mark -->> Mined Collection 然后又回来 young Collection

                 可以看到这三个部分是循环的 

                G1 是jdk9默认的垃圾回收器 ,将堆内存划分为多个相同的大小的区域(region)

                而这些区域包含新生代(伊甸园 Eden 幸存区 survivor)老年代

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值