Поведение Java CMS GC

У меня есть приложение, которое вызывает создание большого количества мусора. Первый (и почти один) критерий - малое время паузы сборки мусора. Я пробую разные параметры GC с помощью инструмента visualgc (и журналов gc). Лучшие параметры приведены ниже.

-XX: + UseConcMarkSweepGC

-Xmx1172M

-Xms600M

-XX: + UseParNewGC

-XX: NewSize = 150M

Мое приложение работает на SunOS 10 с Java 1.6.0_21. Оборудование - это 2 четырехъядерных процессора (результат uname -X: numCPU = 8).

Вопросы:

Наблюдение за поведением сборщика мусора, создание новых объектов в пространстве eden до заполнения eden. Когда выполняется полный сбор мусора в eden space, очистите мусор, если объект не является мертвой копией в Old-gen (я отбрасываю пробелы «от» и «до»), аналогично Old-Gen заполнен, сборщик мусора работает с параллельной фазой CMS и очищает старый -генное пространство. Некоторая часть CMS - это Stop-the-world (время паузы). Это петля.

  1. Верно ли приведенное выше Scenerio?
  2. После очистки GC пространства старого поколения недостаточно места, расширьте пространство старого поколения (значения XMS и XMS разные)?
  3. Когда начинается полная операция GC? Как это решить?
  4. Продолжительность параллельной фазы CMS зависит от размера пространства Eden, на самом деле я ожидаю, что пространство Eden не влияет на длительность параллельной фазы CMS. Что происходит с GC, связанным с eden space на параллельной фазе CMS?
  5. Что еще предлагает мне минимизировать время паузы? Действительно, самый ценный ответ для меня :)

Спасибо

6
задан Erdinç Taşkın 16 March 2011 в 08:39
поделиться