jvm的默认垃圾收集器

时间:2011-03-03 00:31:53

标签: java

  

可能重复:
  find which type of garbage collector is running

有没有办法告诉默认情况下jvm中使用了什么垃圾收集器?

3 个答案:

答案 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)

JConsole你追求的是什么?

摘录:

  

垃圾收集器信息:有关GC的信息,包括垃圾收集器名称,执行的收集数量以及执行GC所花费的总时间。

答案 2 :(得分:0)

我认为答案是你无法直接告诉默认垃圾收集器是什么。您可以告诉当前JVM中当前使用的垃圾收集器,但这取决于其他因素...例如JVM选项...因此您无法从中可靠地推断出默认GC。

此外(不管@Lucas说的话),通过其他方式(可靠地)推断默认值是很难的:

  • 正如@Lucas指出的那样,默认值取决于机器是否属于“服务器级”类别,并且在某些情况下取决于无法轻松访问的机器的物理属性。

  • 该过程的文档不完整,并不一定完全可靠。

  • 行为(“服务器级”分类,每个类的默认GC等)可能依赖于Java版本。实际上,它甚至可能随JVM补丁版本而改变。

IMO,更好的方法是在启动子进程时显式设置JVM选项,而不依赖于默认值。或者,只需使用默认值即可。