G1GC Сборщик мусора - PullRequest
       20

G1GC Сборщик мусора

0 голосов
/ 19 апреля 2019

Недавно я увидел странное поведение с G1GC.Я использую Java 1.8.0_152 и установил алгоритм GC как G1GC с дедупликацией строк.Недавно я увидел, что объем памяти процесса Java (полученный из top -c) составляет 6,8 г, а фактический размер кучи (S0U + S1U + EU + OU) - 4 ГБ.С 260 потоками (с использованием xss 1MB по умолчанию) я вижу, что 2.54 ГБ памяти занимает сам сборщик G1, который кажется довольно большим .. Я что-то здесь упускаю ... Может кто-нибудь, пожалуйста, помогите мне здесь ... относительно того, почему сам G1GC являетсязанимает столько памяти .. Что произойдет, если я увеличу кучу до 6 ГБ ... Будет ли G1GC пытаться взять больше, чем существующая ОЗУ (8 ГБ), и потерпит неудачу, или он выполнит полный GC (что, я считаю, должно) при этомвремя

Мой XMX имеет размер 7 ГБ

Похоже, что внутренним компонентам G1GC требуется дополнительная память.Я выполнил полный сборщик мусора через jstat, и объем занимаемого им процесса java увеличился на 0,1 ГБ.Это заставляет меня думать, что внутренности G1GC забирают эту память.Помимо сокращения объема оперативной памяти, есть еще что-то, чтобы гарантировать, что внутренности G1GC не занимают слишком много памяти

1 Ответ

0 голосов
/ 19 апреля 2019

При -Xmx=7G G1 может потребоваться до 7 ГБ ОЗУ для кучи объектов Java плюс дополнительная память для управления этой кучей.Кроме того, JVM (не G1) может занимать различные объемы памяти для отображаемых в память файлов, загруженных данных классов, скомпилированных методов, прямых байтовых буферов и других внутренних данных.Кроме того, любые собственные библиотеки, загруженные в процесс, могут также занимать память, не отслеживаемую никакими специфическими для Java механизмами.

То, что делает ваша операционная система после исчерпания физической памяти, зависит от конфигурации.Он может переместиться на диск, попытаться сжать память или убить процесс.JVM может обнаружить некоторые, но не все эти условия перед тем, как быть убитым, и вместо этого выдать OOME.

...