У меня есть приложение, которое вызывает создание большого количества мусора. Первый (и почти один) критерий - это небольшое время паузы GC. Я пробую разные параметры GC с помощью инструмента visualgc (и gc logs). Лучшие параметры ниже.
-XX: + UseConcMarkSweepGC
-Xmx1172M
-Xms600M
-XX: + UseParNewGC
-XX: NewSize = 150M
Мое приложение работает на SunOS 10 с Java 1.6.0_21. Аппаратное обеспечение - 2 x CPU quad core (uname -X result - numCPU = 8).
Вопросы
Наблюдение за поведением GC, создание новых объектов на пространстве eden до тех пор, пока eden не будет заполнен. Когда пространство eden заполняется полным GC, очищайте мусор, если объект не является мертвой копией в Old-gen (я отбрасываю "от" и "до" ), аналогично Old-Gen заполнен, GC работает с CMS-параллельной фазой и очищается -gen. Некоторая часть CMS - Stop-the-world (время паузы). Это петля.
- Является ли выше scenerio истинным?
- После GC чистого пространства старого поколения, нет пространства для расширения пространства старого поколения (значения XMS и XMS различаются)?
- Когда запускается полная работа GC? Как это решить?
- Продолжительность CAM-параллельной фазы зависит от размера пространства Eden, на самом деле мое ожидание - пространство Eden не влияет на длительность фазы CMS. Что происходит с GC, связанным с пространством eden на параллельной фазе CMS?
- Что еще предлагает мне минимизировать время паузы? Действительно, Самый ценный ответ для меня:)
Спасибо