Изменяет ли метка совпадения Java GC по размеру молодого поколения? - PullRequest
0 голосов
/ 08 ноября 2018

Когда я использую сборщик мусора Java CMS, я вижу, что он может изменять размеры старого поколения, но редко кажется, что он изменяет размеры молодого поколения.

например. используя флаги -Xms10m -Xmx1g XX:+UseConcMarkSweepGC В начале я вижу, что молодое поколение составляет около 3М, а общий размер около 10М:

2018-11-08T15:39:20.620+0100: 0.111: [GC (Allocation Failure) 2018-11-08T15:39:20.620+0100: 0.111: [ParNew: 2733K->320K(3072K), 0.0019042 secs] 2733K->1114K(9920K), 0.0019599 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 

но позже молодое поколение все еще около 3М, но общий размер теперь составляет 160М:

2018-11-08T15:39:39.946+0100: 19.437: [GC (Allocation Failure) 2018-11-08T15:39:39.946+0100: 19.437: [ParNew: 2978K->256K(3072K), 0.0020321 secs] 115364K->112701K(159088K), 0.0021039 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] 

Это приводит к большому количеству маленьких GC ParNew, которые работают довольно плохо.

В аналогичном эксперименте, используя -Xms10m -Xmx12g, я вижу, что молодое поколение было изменено с 3М до 100М, когда общая куча была изменена до 300М. Однако гораздо позже общая куча изменилась до 11G, но молодое поколение осталось на 100M. Похоже, CMS изменяет размеры молодого поколения, но редко.

Есть ли способ побудить / заставить сборщик CMS изменить размер молодого поколения, когда он изменяет размер старого поколения? Я хочу сохранить начальный размер небольшим по другим причинам (связанным с незнанием, требуется ли большая куча).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...