Настройка JVM и GC - теория без полного GC

У меня есть крупномасштабное приложение с двумя типами объектов: долгоживущие (кэш) и недолговечные (запрос-процесс-ответ). Теоретически с этим типом приложений, я думаю, можно настроить молодые и старые пространства, поэтому потребление старого пространства является постоянным, что не приводит к полному сборщику мусора.

Я изменил параметры newSize-maxNewSize, но Старая куча продолжает расти до полного GC. После каждого полного GC потребление снижается до 20% (кэш занимает 20%). Почему-то мои объекты попадают в Старое пространство. У меня есть два подозреваемых, почему они перемещаются в старое пространство:

  • Согласно этой статье: http://chaoticjava.com/posts/gc-tips-and-memory-leaks/ сообщается, если у вас большой выделенные объекты попадают прямо в Старое пространство. Верно ли это, и если это так, существует ли параметр JVM Option, который может установить порог размера объекта для молодого пространства?

  • Если я правильно понял процесс, объекты переключаются между разделами выживания To-From, прежде чем перемещаются в раздел Old. Есть ли параметр, который может установить, сколько переключений между To и From должно быть выполнено перед переходом в старое пространство?

Есть другие советы?

Спасибо, Amar

13
задан Amar 3 June 2011 в 10:58
поделиться