网站首页 > java教程 正文
7种经典垃圾回收器:Serial、Serial old、ParNew、Parallel Scavenge、Parallel old、CMS、G1
串行回收器:Serial、Serial old
并行回收器:ParNew、Parallel Scavenge、Parallel old
并发回收器:CMS、G1
1.Serial收集器:Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。单线程的收集器,收集垃圾时,必须stop the world,使用复制算法。
2.Serial Old收集器:是Serial收集器的老年代版本,单线程收集器,使用标记整理算法。它主要有两大用途:一种用途是在JDK1.5以及以前的版本中与Parallel Scavenge收集器搭配使用,另一种用途是作为CMS收集器的后备方案。
启用命令: -XX:+UseSerialGC -XX:+UseSerialOldGC
3.Parale Scavenge收集器:Parallel收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为(控制参数、收集算法、回收策略等等)和Serial收集器类似。默认的收集线程数跟cpu核数相同,当然也可以用参数(-XX:ParallelGCThreads)指定收集线程数,但是一般不推荐修改。
Parallel Scavenge收集器关注点是达到一个可控的吞叶量,所谓吞吐量就是CPU中用于运行用户代码的时间与CPU总消耗时间的比值。如果虚拟机总共运行100分钟,其中垃圾花掉1分钟,香叶量就是99%。
新生代采用复制算法,老年代采用标记-整理算法。
4.Parallel Old收集器:Parallel Scavenge收集器的老年代版本。使用多线程和“标记-整理”算法。在注重吞吐量以及CPU资源的场合,都可以优先考虑 Parallel Scavenge收集器和Parallel Old收集器(JDK8默认的新生代和老年代收集器)。
启用命令 -XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代)
5.ParNew收集器:ParNew收集器其实跟Parallel收集器很类似,区别主要在于它可以和CMS收集器配合使用。新生代采用复制算法,老年代采用标记-整理算法。
6.CMS(Concurrent Mark Sweep) 收集器: 收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体验的应用上使用,它是HotSpot虚拟机第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。整个过程分为5个步骤:初始标记->并发标记->重新标记->并发清理->并发重置。
7.G1收集器:标记整理算法实现,运作流程主要包括以下:初始标记,并发标记,最终标记,筛选回收,不会产生空间碎片,可以精确地控制停顿。
猜你喜欢
- 2025-02-03 Java8 的 G1 垃圾回收器相对于之前的 CMS 有什么特别的呢?
- 2025-02-03 在Java中如果对象的引用被设置为null,垃圾收集器应当如何工作?
- 2025-02-03 JVM简介—2.垃圾回收器和内存分配策略
- 2025-02-03 JVM那些事之垃圾回收算法(jvm1.8垃圾回收机制)
- 2025-02-03 7种JVM垃圾收集器详解(超级详细)(jvm垃圾回收器详解)
- 2025-02-03 Java 垃圾回收机制(GC)详解(java垃圾回收g1)
- 2025-02-03 新一代 Java垃圾回收神器:ZGC(java垃圾回收g1)
- 2025-02-03 JVM 垃圾回收器解读(jvm垃圾回收算法和垃圾回收器)
- 2025-02-03 关于Java垃圾回收,你必须要知道FullGC是什么
- 2025-02-03 Java与Go语言:实际应用体验的深度剖析
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)