Значения округления журнала G1GC для больших куч

Журнал G1GC печатает значения заполнения кучи как округленные до МБ или ГБ. Есть ли способ печатать все значения в КБ или МБ?

Я хочу проанализировать коэффициенты распределения и продвижения, и такое округление значений приводит к неточности.

Например, приведенное ниже событие GC показывает, что общий объем кучи уменьшается с 11.7G->1826.2M, что показывает только округленное значение 11.7G для общего размера кучи до сбора.

4592.204: [GC pause (G1 Evacuation Pause) (young)
  [Eden: 9804.0M(9804.0M)->0.0B(9800.0M) Survivors: 112.0M->86.0M 
  Heap: 11.7G(15.0G)->1826.2M(15.0G)]
  ...

Используемые флаги ВМ:

-Xms16g -Xmx16g -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log

Использование Hotspot JVM 1.8.0-b132.


person Aleš    schedule 18.03.2014    source источник
comment
Я ищу подтверждение того, что это поведение по умолчанию и не может быть изменено.   -  person Aleš    schedule 21.03.2014


Ответы (1)


См. исходный код точки доступа OpenJDK 7u здесь и здесь.

Обе точки используют методы byte_size_in_proper_unit и proper_unit_for_byte_size, расположенные здесь.

Я считаю, что единственный способ изменить журналы G1GC из PrintGCDetails или PrintGC — это перекомпилировать JVM, а это можно сделать только с OpenJDK, а не с JVM Oracle.

Дополнительную информацию см. в следующем сообщении о stackoverflow. о формате вывода.

Вы также можете использовать такой инструмент, как jstat, с параметрами -gc и -gcnew для данных в журналах G1GC, отобранных в разное время только в КБ, см. здесь для получения дополнительной информации об использовании jstat. Если вы хотите написать инструмент, аналогичный Jstat, источник находится здесь.

person Appleman1234    schedule 21.03.2014