JVM垃圾回收器_jdk6默认垃圾回收器

JVM垃圾回收器_jdk6默认垃圾回收器JVM垃圾回收器垃圾回收器分类说明垃圾回收器工作原理垃圾回收器分类说明如果说垃圾回收算法是内存回收的方法论,那么垃圾回收器就是内存回收的具体实现,下图展示了7中作用于不同分代的收集器。其中用于新生代的回收器包括Serial,PraNew,ParallelScavenge,回收老年代的收集器包括SerialOld,Parallelold,CMS,还有作用于回收整个java堆的G1收集器,不同收集器之间的连线表示他们可以搭配使用。Serial收集器(复制算法):新生代单线程收集器,标记和清理

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

垃圾回收器分类说明

如果说垃圾回收算法是内存回收的方法论,那么垃圾回收器就是内存回收的具体实现,下图展示了7中作用于不同分代的收集器。其中用于新生代的回收器包括Serial,PraNew,Parallel Scavenge,回收老年代的收集器包括 Serial Old ,Parallel old,CMS,还有作用于回收整个java堆的G1收集器,不同收集器之间的连线表示他们可以搭配使用。
在这里插入图片描述

  1. Serial收集器(复制算法):新生代单线程收集器,标记和清理都是单线程的,优点是简单高效
  2. ParNew收集器(复制算法):新生代多线程收集器,实际是Serial 收集器的多线程版本,在多核CPU的环境下有着比Serial跟好的表现。
  3. Parallel Scavenge收集器(复制算法):新生代并行收集器,追求高吞吐量,高效利用CPU,吞吐量=用户线程时间/(用户线程时间+GC线程时间),高吞吐量课高效率的利用CPU时间,尽快完成程序计算任务,适合后台应用等交互相应要求不高的场景;
  4. Serial Old收集器(标记-整理算法):老年代单线程收集器,Serial收集器的老年代版本
  5. Parallel Old 收集器(标记-整理算法):老年代多线程并行收集器,吞吐量优先,Parallel Scavenge 收集器的老年代版本
  6. CMS(Concurrent Mark Sweep)收集器(标记-清除算法) :老年代并行收集器,以获取最短回收停顿时间为目标的收集器,具有高并发,低停顿的特点,最求最短的GC回收停顿时间。CMS 是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器,对于要求服务器响应速度的应用上,这种垃圾回收器非常合适。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS 是采用标记-清除算法所以gc的时候会产生大量的内存碎片,当剩余内存不满足程序运行要求时,系统将会出现Concurrent ModeFailure,临时CMS 会采用Serial Old 回收器进行垃圾回收,此时性能将会被降低。
  7. G1(Garbage First) 收集器(标记-整理算法):java堆并行收集器,G1收集器是JDK1.7提供的一个新的收集器,G1收集器基于“标记-整理”算法实现,也就是说不会产生哪内存碎片。此外G1 收集器不同于之前的收集器的一个重要特点:G1回收的范围是整个java堆,而之前六种收集器回收的范围仅限于老年代或新生代。

垃圾回收器工作原理

分代回收器有两个分区,老年代和新生代,新生代默认的空间占比总空间的1/3,老年代的默认占比2/3。
新生代使用的是复制算法,新生代里有三个区,Eden,To Survivor ,From Survivor,他们默认占比是8:1:1,执行流程如下:

  1. 把Eden+From Survivor 存活的对象放入 To Survivor 区
  2. 清空 Eden 和From Survivor 分区
  3. From Survivor 和To Survivor 分区交换,From Survivor 变TO Survivor ,To Survivor 变 From Survivor
    每次都在FromSurvivor 到To Survivor 移动时都存活的对象,年龄就加一,当你年龄达到15(默认配置是15)时,升级为老年代。大对象也会直接进入老年代。老年代当空间占比占用达到某个值之后就会触发全局垃圾回收,一般使用标记整理的执行算法,以上这些循环往复就构成了整个分代垃圾回收的整体执行流程。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194847.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 修改asmx样式「建议收藏」

    修改asmx样式「建议收藏」今天看到一张图,asmx的WebService。长这样:当时就感觉有意思,这个页面风格和我们平时的不一样,我们平时的WebService长这样:我们如果在WebMetohd上面加注释,即[WebMethod(Description=”注释”)],那么长这样:那么问题就来了,第一张图里面的样式是如何实现的呢?在浏览器上进入调试模式观察,可以发现它的html和我们的有点不…

    2022年4月29日
  • Linux find命令根据时间筛选出文件进行删除

    Linux find命令根据时间筛选出文件进行删除

    2021年6月3日
  • SQL分页查询方案的性能对比[通俗易懂]

    SQL分页查询方案的性能对比[通俗易懂]作者|中国农业银行吴海存责编|晋兆雨头图|CSDN下载自视觉中国导读本文主要介绍了基于ROWNUM、主键列/非空唯一性列、分析函数、OFFSET-FETCHNEXT机制的…

    2022年6月26日
  • go语言后端框架2021_go语言编译器

    go语言后端框架2021_go语言编译器点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章最近写了很多Go语言的原创文章,其中Go语言实战系列就有30篇,近15W字,还有最近更新的Go经典库系列、Gin实战系列,不过通过大…

    2022年10月12日
  • 又一大型色情直播App被捣毁,女主播哭求别告诉家人

    又一大型色情直播App被捣毁,女主播哭求别告诉家人来源:JAVA2856位女主播、617万注册用户、平台接受充值金额超5000万、500多名女主播提现金额2640万……这一连串数字的背后,又是一个网络淫秽直播平台——“小棉袄”APP。1…

    2022年9月4日
  • String、StringBuilder和StringBuffer

    String、StringBuilder和StringBuffer这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String  String最慢的原因:  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但…

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号