64.7款经典的垃圾收集器以及它们之间的组合关系、如何查看默认的垃圾回收器

2024-05-29 16:38

本文主要是介绍64.7款经典的垃圾收集器以及它们之间的组合关系、如何查看默认的垃圾回收器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1.七款经典的垃圾收集器
  • 2.垃圾收集器之间组合关系
  • 3.查看默认的垃圾收集器

1.七款经典的垃圾收集器

经典的垃圾回收器又如下7种:
在这里插入图片描述
如下图所示,是经典的垃圾回收器和垃圾分代之间的关系。
Serial GCParallel Scavenger GC以及ParNew GC只能收集年轻代。
Serial Old GCParallel Old GC以及CMS GC只能收集老年代。
G1 GC既能收集年轻代又能收集老年代。
在这里插入图片描述

2.垃圾收集器之间组合关系

一款年轻代的垃圾收集器总是对应着一款老年代的垃圾收集器。
下面的图更新到了JDK14

  1. 先将虚线看成是实线,一款年轻代的垃圾收集器对应着两款老年代的垃圾收集器。比如说新生代使用Serial GC,老年代可以使用CMS GC或者Serial Old GC
  2. 在老年代,图中的CMS GC还对应着Serial Old GCSerial Old GCCMS GC的后备方案,因为CMS GC是并发的垃圾收集器,在进行垃圾回收的时候,用户线程还在工作,用户线程可能还在制造垃圾,如果CMS GC垃圾回收的速度比用户线程制造垃圾的速度慢,就会回收失败;如果CMS GC失败会使用Serial Old GC作为后备方案,进行一次Full GC
  3. 红色的虚线,表示的是在JDK8中这种组合被废弃,但是还可以使用;在JDK9中就被移除了,完全不能使用这两种组合了。绿色虚线表示的是,JDK14中,这种组合被废弃了。
  4. CMS GC在JDK14中被移除了。
    在这里插入图片描述
    在这里插入图片描述
    JDK8中默认的组合是Parallel Scavenger GCParallel Old GCJDK9以后默认的垃圾回收器是G1 GC
    没有哪一种垃圾回收器可以绝对的说是最好的,不同的场景选择不同的垃圾回收器会更好。

3.查看默认的垃圾收集器

在这里插入图片描述
两种方式:

  1. 执行程序的时候,在eclipseJVM参数中加入-XX:+PrintCommandLineFlags
  2. 通过命令行的方式: jinfo -flag 相关垃圾回收器 java程序进程ID在这里插入图片描述
    输出的结果为-XX:+UseParallelGC,+号表示的是使用了ParallelGC。如果是减号,就表示的是没有使用。

更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html

这篇关于64.7款经典的垃圾收集器以及它们之间的组合关系、如何查看默认的垃圾回收器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014069

相关文章

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.