JVM: Почему моя область S0 C имеет нулевой размер? - PullRequest
0 голосов
/ 12 марта 2020

Я вижу большое количество мусора молодого поколения в моем приложении. Это scala приложение, работающее на openJDK 8u212. Я сделал jstat на работающем контейнере docker, и он показывает, что область S0 C имеет нулевой размер. Это объяснило бы, почему я буду так молод, G C, но я не знаю, почему это происходит.

S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
 0.0   2048.0  0.0   2048.0 36864.0  31744.0   706560.0   644022.6  93360.0 82013.4 11184.0 9627.5  15299  126.920   0      0.000  126.920

Есть какие-нибудь идеи о том, как я могу исследовать это дальше? Это мои JVM_OPTS.

"-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/mesos/sandbox/ -Xmx3g -XX:+UseG1GC -XX:+UseStringDeduplication 

Я не смог найти опций JVM, которые я мог бы использовать для управления размером S0 C.

1 Ответ

0 голосов
/ 13 марта 2020

Когда пространство eden заполнено, запускается незначительная сборка мусора (состоящая из пространства eden и оставшегося в живых). Когда запускается незначительная сборка мусора, несвязанные объекты (в Eden и оставшихся в живых) удаляются, ссылочные объекты увеличиваются по возрасту, а ссылочные объекты перемещаются в другое пространство оставшихся в живых. Пространство Эдема и Выжившего очищено. Этот цикл продолжается до тех пор, пока состаренные предметы не достигнут определенного возрастного порога. Когда объекты достигают определенного возрастного порога, они превращаются из молодого поколения в старое. Как сказал Хольгер, одно из двух оставшихся в живых пространств никогда не может содержать объекты.

Ссылки:

...