Стратегия сбора мусора Java - PullRequest
       22

Стратегия сбора мусора Java

3 голосов
/ 07 сентября 2010

Я ищу способ выяснить стратегию сбора мусора (GC) (сборщик), которую виртуальная машина Java использует в данный момент времени. (Позже я бы хотел, чтобы он правильно отражал выбранную мной стратегию, скажем XX:+UseConcMarkSweepGC.)

verbose:gc (в его основной форме) не помогает, поскольку он просто показывает мне, что все это делало с каждым поколением . Есть ли другой флаг, который я могу установить, чтобы он выплевывал используемую стратегию GC?

JDK версия 1.6_21

Ответы [ 4 ]

8 голосов
/ 07 сентября 2010

Мммм ... вы, конечно, можете узнать, какую стратегию использует определенная JVM со страницей jconsole (VM Summary).Не уверен насчет того, чтобы повлиять на него или изменить его.

РЕДАКТИРОВАТЬ: Чтобы помочь вам с программной проверкой и изменением флагов JVM работающей ВМ, вы можете использовать утилиту jinfo.exe в JDK.Например, чтобы проверить, установлен ли флаг ParallelGC, вы можете выполнить: jinfo.exe -flag UseParallelGC <PID>.

4 голосов
/ 07 сентября 2010

Если вы хотите получить эту информацию во время выполнения в приложении, работающем на JVM, вы можете использовать GarbageCollectorMXBean :

List<GarbageCollectorMXBean> gcs =
  ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gc : gcs) {
  System.out.println(gc.getName());
}
1 голос
/ 07 сентября 2010

вы можете попробовать утилиту jinfo, поставляемую с JDK. Укажите для этой утилиты PID процесса JVM, и он покажет вам все общие аргументы, переданные этому процессу JVM. Ниже приводится URL для того же:

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

Надеюсь, это поможет.

0 голосов
/ 07 сентября 2010

Опять же, на поведение ГХ можно повлиять, но не предсказать.

...