CG начинают собирать мусор слишком рано - PullRequest
0 голосов
/ 16 мая 2019

У меня была куча 6g, и gc всегда начинал работать при нагрузке кучи ~ 4.5g.Теперь я установил -Xmx20g (размер кучи 20 гигабайт) и -Xms16g (начальный размер кучи 16 гигабайт), но, как и раньше, GC активируется с объемом памяти ~ 4.5g.Почему и как заставить gc использовать всю эту память?GC является стандартным.Java 8. enter image description here

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Действительно!Проблема была в райском пространстве.Он был автоматически установлен на 6Gb на -Xms16g.Я анализирую, что у моего приложения был небольшой размер объекта с длительным сроком службы, поэтому я настроил Edem до 16g, максимальный размер кучи до 20g и GC активировал реже.enter image description here

enter image description here

0 голосов
/ 17 мая 2019

Возможно, вам следует попробовать использовать -Xms20G и -Xmx20G, чтобы избежать изменения размера. Важно отметить, что при каждом изменении размера JVM выполняется полный сборщик мусора, поэтому избегание этого процесса - хороший способ минимизировать количество полных сборок мусора.

Пожалуйста, прочитайте это

"Когда JVM Hotspot запускается, куче, молодому поколению и пространству поколения перми выделяются их начальные размеры, определяемые параметрами -Xms, -XX: NewSize и -XX: PermSize соответственно, и увеличиваются как необходимо до максимального зарезервированного размера, который равен -Xmx, -XX: MaxNewSize и -XX: MaxPermSize. JVM может также уменьшить реальный размер во время выполнения, если память не нужна так сильно, как было указано изначально. Однако каждое изменение размера запускает полную сборку мусора (GC) и, следовательно, влияет на производительность. Рекомендуется, чтобы начальный и максимальный размеры были идентичными "

Источник: http://www.oracle.com/us/products/applications/aia-11g-performance-tuning-1915233.pdf

Если бы вы могли предоставить свой gc.log, было бы полезно тщательно проанализировать этот случай.

С уважением, RCC

...