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

一、引言

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

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

垃圾收集器类型 JVM 参数名称
Serial def new generation
ParNew par new generation
Parallel Scavenge PSYoungGen
Parallel Old ParOldGen
CMS concurrent mark-sweep generation
Serial Old(MSC) tenured generation
G1 garbage-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 

文章来源地址https://uudwc.com/A/3wWV9

原文地址:https://blog.csdn.net/xhf852963/article/details/132707774

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月15日 02:37
Excel VSTO开发10 -自定义任务面板
下一篇 2023年09月15日 02:38