Post JSE 5人机工程学旨在自动为您选择合适的垃圾收集器类型(以及其他内容)。
我想知道是否有任何方法可以确认/知道JVM人机工程学选择/当前设置的垃圾收集器的类型和性能目标。
发布于 2012-04-03 00:22:56
java -XX:+PrintCommandLineFlags -version
将显示默认的垃圾收集器。我还发现下面的页面很有用,它是details the default garbage collector for various operating systems。
发布于 2017-02-15 20:42:35
(适用于Java <= 8__)
此命令打印正在运行的JVM的GC类型:
jmap -heap <pid> | grep GC
对于现代计算机(多cpus、大内存),除非您通过JVM标志显式指定要使用哪个gc,否则JVM会将其检测为服务器计算机,并默认使用Parallel GC
。
e.g
jmap -heap 26806 | grep GC
输出:
具有8个线程的
并行GC
@Update -用于Java 9+
(感谢@JakeRobb的评论。)
从Java 9开始,与这个问题相关的更改有两个:
jhsdb
附加到java进程或启动调试器。参考:jhsdb
G1
.命令格式:
jhsdb jmap --heap --pid <pid> | grep GC
e.g
jhsdb jmap --heap --pid 17573 | grep GC
输出:
具有8个线程的
垃圾优先(G1) GC
发布于 2013-11-07 21:43:49
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.List;
public class GCInformation {
public static void main(String[] args) {
try {
List<GarbageCollectorMXBean> gcMxBeans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gcMxBean : gcMxBeans) {
System.out.println(gcMxBean.getName());
System.out.println(gcMxBean.getObjectName());
}
} catch (RuntimeException re) {
throw re;
} catch (Exception exp) {
throw new RuntimeException(exp);
}
}
}
例如,尝试以下命令以了解各种GC类型
java -XX:+PrintCommandLineFlags GCInformation
java -XX:+PrintCommandLineFlags -XX:+UseParallelGC GCInformation
java -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC -XX:+UseParNewGC GCInformation
java -XX:+PrintCommandLineFlags -XX:+UseConcMarkSweepGC -XX:-UseParNewGC GCInformation
https://stackoverflow.com/questions/5024959
复制相似问题