Как интерпретировать график активности GC в JProfiler?

В последнее время я работаю над оптимизацией некоторого кода (во время вычислений и макс. Требуемой памяти). Чтобы узнать, есть ли потенциальные выгоды для оптимизации стоимости памяти, я использую JProfiler. типично

  • если он высокий, я должен попытаться уменьшить его в глобальном масштабе
  • если это колючий, я должен попытаться уменьшить создание промежуточного объекта

Теперь я нахожусь во второй ситуации, и график активности GC показывает пики, но все они составляют менее 2% (см. Изображение ниже). Как я должен это понимать?

По умолчанию я понимаю, что сумма / интеграл кривой активности GC является оценкой общего процента процессора, используемого для сбора данных. Так что здесь это будет означать гораздо меньше, чем максимум 2%

Это что правильно? Я что-то пропустил?

2 ответа

Решение

По умолчанию я понимаю, что сумма / интеграл кривой активности GC является оценкой общего процента процессора, используемого для сбора данных.

Так и должно быть, да.

Так что здесь это будет означать гораздо меньше, чем максимум 2%

Макс обманчив здесь. Если вы сделаете интервал выборки достаточно малым, максимальный интервал будет составлять 100% времени, потраченного на GCing. Это когда этот срез меньше длительности паузы ГХ. Таким образом, эти пики уже являются усредненными по некоторым большим временным интервалам.

Как я должен это понимать?

Что ваше приложение, вероятно, не тратит много времени на сборку мусора. Но ваш график охватывает только относительно небольшое количество времени, поэтому он может не отражать основные коллекции или параллельные циклы. Интерпретация журналов GC JVM предоставит больше подробностей, если вы заботитесь о задержке, а не только о пропускной способности.

По умолчанию я понимаю, что сумма / интеграл кривой активности GC является оценкой общего процента процессора, используемого для сбора данных. Так что здесь это будет означать гораздо меньше, чем максимум 2%

Это верно?

Да, это правильно. Если вы хотите узнать, где расположены временные объекты, перейдите в Live Memory->Allocation Call Tree и выберите "Объекты сбора мусора" в качестве режима живучести.

Чтобы увидеть классификацию в любой точке размещения или горячей точке распределения, используйте анализ дерева вызовов "Показать классы".

Другие вопросы по тегам