查找正在运行的垃圾回收器类型

2022-08-31 13:37:17

JSE 5 之后的人体工程学设计旨在自动为您选择适当类型的垃圾回收器(以及其他内容)。

我想知道是否有任何方法可以确认/了解垃圾回收器的类型和JVM人体工程学选择的性能目标/当前设置。


答案 1
java -XX:+PrintCommandLineFlags -version

将显示默认的垃圾回收器。我还发现以下页面很有用,其中详细介绍了各种操作系统的默认垃圾回收器


答案 2

(对于 Java <= 8

此命令打印正在运行的 JVM 的 GC 类型:

jmap -heap <pid> | grep GC

对于现代计算机(多个cpu,大内存),JVM会将其检测为服务器计算机,并默认使用,除非您通过JVM标志显式指定要使用的gc。Parallel GC

例如

jmap -heap 26806 | grep GC

输出:

具有 8 个线程的并行 GC


@Update - 适用于 Java 9+

(感谢@JakeRobb的评论。

从Java 9开始,有2个与此问题相关的更改:

  • 需要 用于附加到 Java 进程或启动调试器。
    参考: jhsdbjhsdb
  • 缺省 gc 将更改为 。G1

命令格式:

jhsdb jmap --heap --pid <pid> | grep GC

例如

jhsdb jmap --heap --pid 17573 | grep GC

输出:

垃圾优先 (G1) GC,带 8 个线程


推荐