Java GC Young / Old 100%, но до / от 0% - PullRequest
0 голосов
/ 15 ноября 2018

В файле журнала hs_err_pid ####. Видно следующее. Пространство eden заполнено так же, как и старое пространство, но пространство из / в равно 0%

Heap:
 PSYoungGen      total 197,652K, used 190,955K [0x00000000eab00000, 0x00000000f8000000, 0x0000000100000000)
  eden space 190,956K, 99% used [0x00000000eab00000,0x00000000f657fff8,0x00000000f6580000)
  from space 6,646K, 0% used [0x00000000f7080000,0x00000000f7080000,0x00000000f7700000)
  to   space 11,364K, 0% used [0x00000000f6580000,0x00000000f6580000,0x00000000f7080000)
 ParOldGen       total 699,397K, used 699,341K [0x00000000c0000000, 0x00000000eab00000, 0x00000000eab00000)
  object space 699,332K, 99% used [0x00000000c0000000,0x00000000eaaffff8,0x00000000eab00000)
 Metaspace       used 71522K, capacity 76253K, committed 129276K, reserved 1126500K
  class space    used 7619K, capacity 11188K, committed 52466K, reserved 1048576K

Может ли это произойти при работе с БОЛЬШИМИ массивами, HashTable или чем-то еще? Возможно ли, что когда происходит незначительный сборщик мусора, пространство от / до слишком мало для обработки размера объекта, и в результате оно идет прямо в старое пространство?

Была ли распространенная причина, с которой люди сталкивались, когда видели такой тип поведения?

1 Ответ

0 голосов
/ 15 ноября 2018

Я бы предложил запустить Eclipse MAT или аналогичный инструмент и проверить, какой объект занимает память.

Я столкнулся с подобной проблемой в Kafka, и это было связано с утечкой памяти, связанной с управляемым компонентом. В моем случае Бобы были очень маленькими по размеру, но их было много.

Таким образом, ваш Старый ген может быть заполнен независимо от размера объекта, если JVM считает, что его нужно поддерживать в живых.

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