Тюнинг G1G C молодой сборник частоты - PullRequest
1 голос
/ 27 января 2020

У меня есть приложение, которое использует байтовый массив вне кучи для чтения данных и переносит их в примитивную таблицу ключей (ключ и значение), основанную на куче. Я выделил 4G своему приложению, запустив его в течение 10 минут, показывающего 14 МБ использования максимальной кучи, но в течение этих 10 минут я вижу, как включается несколько молодых коллекций. Эти коллекции работают только для нескольких регионов (6 - 8). Я профилировал его, чтобы посмотреть, сколько мусора генерирует мое приложение, но оно занимает менее 40 МБ за 10 минут.

Есть ли способ, я могу сказать G1G C, чтобы не пнуть молодого G C, потому что осталось много кучи. Вероятно, собирать его, скажем, после 1 ГБ или 50% использования молодого поколения, которое, я знаю, никогда не попадет в мое приложение? Я попробовал следующее:

  1. Увеличение XX: G1NewSizePercent до 50%, и это имело значение, но не достаточно. Поэтому вместо 10 коллекций я получаю 5. Но в моем случае 5 - это слишком много.
  2. Сокращение времени паузы до 1 мс.-XX: MaxGCPauseMillis
  3. Увеличение числа параллельных потоков до того же числа, что и мои ядра через XX: ConcGCThreads.

Пример G C журналов:

101.211: [G C пауза (G1 Evacuation Pause) (молодой) 101.211 : [G1Ergonomics (CSet Construction) начинает выбирать CSet, _pending_cards: 1030, прогнозируемое базовое время: 3.04 мс, оставшееся время: 46,96 мс, целевое время паузы: 50,00 мс] 101.211: [G1Ergonomics (CSet Construction) добавить молодые регионы в CSet, eden: 3 региона, выжившие: 1 регионов, прогнозируемое время молодого региона: 1.03 мс] 101.211: [G1Ergonomics (CSet Construction) f ini sh выбор CSet, eden: 3 региона, выживших: 1 регионов, старые: 0 регионов, прогнозируемое время паузы: 4,07 мс, целевое время паузы: 50,00 мс], 0,0010747 с ] [Параллельное время: 0,6 мс, G C Рабочие: 8] [ G C Рабочий запуск (мс): Мин: 101210,9, Avg: 101211 .0, Макс .: 101211.1, Разница: 0,1] [Ext Root Сканирование (мс): Мин: 0,2, Ср .: 0,2, Макс: 0,3, Разница: 0,2, Сумма: 1,7] [Обновить RS (мс): Мин: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.3] [Обработанные буферы: Min: 0, Avg: 1.0, Max: 2, Diff: 2, Sum: 8] [Scan RS (ms): Min : 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0] [Код Root Сканирование (мс): Min: 0.0, Avg: 0.0, Max: 0.2, Diff: 0.2, Sum: 0.2] [ Копирование объекта (мс): Мин: 0,0, Ср .: 0,1, Макс: 0,1, Разница: 0,1, Сумма: 0,6] [Окончание (мс): Мин: 0,0, Ср .: 0,1, Макс: 0,1, Разница: 0,1, Сумма: 0,7] [Количество попыток завершения: мин: 1, среднее значение: 1,0, макс: 1, различие: 0, сумма: 8] [G C рабочий другой (мс): мин: 0,0, среднее значение: 0,0, макс: 0,0, различие : 0,0, сумма: 0,1] [G C общее количество рабочих (мс): мин: 0,4, среднее значение: 0,4, макс: 0,5, разница: 0,1, сумма: 3,5] [G C конец рабочего (мс): мин : 101211,4, Avg: 101211,5, Макс .: 101211,5, разница: 0,0]

...