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

相关文章

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

前端 CSS 经典:文字描边

前言:文字描边有两种实现方式 1. text-shadow 设置 8 个方向的文字阴影,缺点是只有八个方向,文字转角处可能有锯齿状。不支持文字透明,设置 color: transparent,文字会成描边颜色。 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Comp

在 Java 中,JDK、JRE、JVM 分别代表什么,有何关系和区别?

在Java开发的世界中,我们会经常听到JDK、JRE和JVM这三个词。它们都与Java的运行环境以及Java程序的编译和运行有关,它们之间也存在一些关联性和区别。 什么是JDK、JRE和JVM 我们来看它们分别是什么。 JDK,全称Java Development Kit,即Java开发工具包。顾名思义,JDK是用于Java开发的一套工具包,里面包含了Java的编译器javac、

ccp之间是不可以直接进行+,-的,要用ccpSub和ccpAdd。

1.  http://www.cnblogs.com/buaashine/archive/2012/11/12/2765691.html  上面有好多的关于数学的方面的知识,cocos2dx可能会用到的 2.学到了   根据tilemap坐标得到层上物体的id int oneTiled=flagLayer->tileGIDt(tilePos);

TableView 当前选中的行号。 默认会使哪一行选中 加入导航条后contentInset向下偏移的64

1.得到当前选中的行号     NSLog(@"%ld %s",  [self.tableView indexPathForSelectedRow].row,__func__); 2.默认选中表格的那一行     [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0 ]

LeetCode:经典题之141、142 题解及延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 142.环型链表 目录 系列目录141. 环形链表常量因子 1

1_CString char* string之间的关系

CString转char*,string string转char*,CString char* 转CString,string 一、CString转char*,string //字串转换测试 CString CString1; std::string string1; CHAR* char1=NULL; //1string1=CString1.GetBuffer();CStri

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。