网上很多资料都是说执行以下命令可以找到java程序的垃圾回收器是哪个。
java -XX:+PrintCommandLineFlags -version
如下图 -XX:+UseParallelGC 就表示当前使用的垃圾回收器是Parallel。
其实这是不完全对的,这个只是表明你系统环境配置的jdk默认的垃圾回收器,和你要找当前运行的java程序可能是两回事,如果你运行的程序刚好是这个jdk环境且启动时JVM参数没有指定使用哪个垃圾回收器 那么这样也不算错 。
但实际不严谨,比如你是jdk8编译的但是在jdk11运行的 又或者启动时JVM参数指定了垃圾回收器 (如:-XX:+UseG1GC)。
使用jdk自带的Jconsole来查看
比如 我用jdk11运行 默认就是G1
用jdk8运行 默认就是PS MarkSweep 即(Parallel Scanvenge + Serial Old的组合)