Java垃圾收集策略

时间:2010-09-07 06:28:56

标签: java garbage-collection jdk1.6

我正在寻找一种技术来找出Java VM在给定时间点使用的垃圾收集(GC)策略(收集器)。 (稍后,我希望它能正确反映我选择的策略,比如XX:+UseConcMarkSweepGC。)

verbose:gc(基本形式)没有帮助,因为它只是向我展示了每个所做的一切。是否还有其他任何标志可以让它吐出正在使用的GC策略?

JDK版本为1.6_21

4 个答案:

答案 0 :(得分:8)

嗯..你当然可以通过jconsole(VM Summary)页面找出某个JVM使用的策略。不确定是影响它还是改变它。

编辑: 为了帮助您以编程方式检查和更改正在运行的VM的JVM标志,可以使用JDK中的jinfo.exe实用程序。例如,要检查ParallelGC标志是否已设置,您可以运行:jinfo.exe -flag UseParallelGC <PID>

答案 1 :(得分:4)

如果要在运行时在JVM上运行的应用程序中获取此信息,则可以使用GarbageCollectorMXBean

List<GarbageCollectorMXBean> gcs =
  ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gc : gcs) {
  System.out.println(gc.getName());
}

答案 2 :(得分:1)

您可以尝试JDK提供的jinfo实用程序。为此实用程序提供JVM进程PID,它将显示传递给此JVM进程的所有通用参数。以下是相同的网址:

http://download.oracle.com/javase/6/docs/technotes/tools/share/jinfo.html

希望它有所帮助。

答案 3 :(得分:0)

同样,GC行为可能会受到影响,但不会被预测。