有没有办法告诉默认情况下jvm中使用了什么垃圾收集器?
答案 0 :(得分:12)
这将打印出当前在JVM中加载的所有垃圾收集器的列表。
import java.lang.management.*;
import java.util.List;
public class x {
public static void main(String args[]) {
List<GarbageCollectorMXBean> l = ManagementFactory.getGarbageCollectorMXBeans();
for(GarbageCollectorMXBean b : l) {
System.out.println(b.getName());
}
}
}
答案 1 :(得分:4)
答案 2 :(得分:0)
我认为答案是你无法直接告诉默认垃圾收集器是什么。您可以告诉当前JVM中当前使用的垃圾收集器,但这取决于其他因素...例如JVM选项...因此您无法从中可靠地推断出默认GC。
此外(不管@Lucas说的话),通过其他方式(可靠地)推断默认值是很难的:
正如@Lucas指出的那样,默认值取决于机器是否属于“服务器级”类别,并且在某些情况下取决于无法轻松访问的机器的物理属性。
该过程的文档不完整,并不一定完全可靠。
行为(“服务器级”分类,每个类的默认GC等)可能依赖于Java版本。实际上,它甚至可能随JVM补丁版本而改变。
IMO,更好的方法是在启动子进程时显式设置JVM选项,而不依赖于默认值。或者,只需使用默认值即可。