当前位置: 首页 > news >正文

三种方式查看 JVM 垃圾收集器

一、引言

        不同版本的 JVM 默认使用的垃圾收集器是不同的,目前的新生代和老年代的垃圾收集器如下图所示,新生代和老年代之间的连线表示这些垃圾收集器可以进行搭配使用

        垃圾收集器的名字和 JVM 里面的参数对照表如下,即在 JVM 里面并不是存储的垃圾收集器的名字,而是有一个其他的名字。它是有一个对应关系的,如下所示:

垃圾收集器类型JVM 参数名称
Serialdef new generation
ParNewpar new generation
Parallel ScavengePSYoungGen
Parallel OldParOldGen
CMSconcurrent mark-sweep generation
Serial Old(MSC)tenured generation
G1garbage-first heap
ZGC

二、方法

2.1 PrintCommandLineFlags

        这种方式仅适用于 windows 平台,直接在控制台输入下面的命令行,可以从展示信息中看到 当前机器 JVM 的垃圾回收器类型

java -XX:+PrintCommandLineFlags -version
# 输入命令:java -XX:+PrintCommandLineFlags -version
C:\Users\Administrator>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=255140800 -XX:MaxHeapSize=4082252800 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2.2 通过 GC 日志和堆信息

        默认情况下,GC 日志和 Heap 信息我们是看不到的,可以通过增加 VM 参数的方式启动。这样当 GC 发生时,我们就能看到关于垃圾回收器的相关信息了。

        我们人为制造一个 full gc 的操作,然后添加 vm 参数,观察输出日志的变化,如下所示:

public class Test {public static void main(String[] args) {List<Object> list = new LinkedList<>();while(true){list.add(new byte[1024]);}}
}
-verbose:gc -XX:+PrintGCDetails

 2.3 通过 jmap -heap vmid 

http://www.lryc.cn/news/161790.html

相关文章:

  • React中函数式组件与类组件有何不同?
  • windows11安装docker时,修改默认安装到C盘
  • python模块之 aiomysql 异步mysql
  • 开开心心带你学习MySQL数据库之第八篇
  • yml配置动态数据源(数据库@DS)与引起(If you want an embedded database (H2, HSQL or Derby))类问题
  • yolov5运行过程遇到的小问题(随时更新)
  • 使用FabricJS创建Image对象的JSON表示
  • 【牛客刷题】反转固定区间链表、每k个节点一组反转
  • 算法:数组常见套路1---双指针、取模、打擂台法
  • App 出海实践:Google Play 结算系统
  • 国际慈善日 | 追寻大爱无疆,拓世科技集团的公益之路
  • 关于DNS的一些认识
  • 游戏性能优化
  • 公开游戏、基于有向图的游戏
  • CSS学习笔记05
  • Linux查看指定端口是否被占用
  • 【Python 自动化】小说推文一键生成思路概述
  • MySQL中的字符集与排序规则详解
  • Java中如何进行加锁??
  • Pytorch3D多角度渲染.obj模型
  • MyBatisPlus 基础Mapperr接口:增删改查
  • 计算机网络与技术——概述
  • 详解TCP/IP协议第三篇:通信数据在OSI通信模型的上下传输
  • 《C++ primer plus》精炼(OOP部分)——对象和类(2)
  • 一点感受
  • VirtualBox RockyLinux9 网络连接
  • java 实现适配器模式
  • 后端常用的Linux命令大全
  • C++面向对象
  • 什么是栈顶缓存技术