Предположим, что у нас есть задача java, которая работает изолированно, и мы можем контролировать ее с помощью visualvm ... и мы замечаем непрерывное создание мусора и периодический gc, как это.java устранение вывоза мусора
Как мы обнаружим, что именно является причиной проблемы
есть способ, чтобы понять, какой способ выполнения генерирует мусор? как мы видим, откуда возникает мусор?
Да, мы можем видеть, какие объекты точно выделяют память, но это не полезно ... я считаю, что много объектов создаются и мусор позже, но я не могу понять, где это происходит и что именно вызывает это ...
Как мы обычно это делаем? какие инструменты использовать? любые ссылки на темы по этому поводу приветствуются
ПРИМЕЧАНИЕ проблема здесь не оптимизации параметров GC, а оптимизация кода, мы хотим устранить создание ненужных объектов, возможно, использовать примитивы вместо т.д ...
Сбор мусора - совершенно нормальная часть жизненного цикла приложения Java. Почему, в частности, тот факт, что это происходит? Какие проблемы вызывает проблема, которую вы пытаетесь решить? – JonK
Я обновил последнюю часть, но да, вы правы, и я знаю, что любое приложение jvm должно это сделать, но в этом случае мы хотим оптимизировать код, нам нужно определить, какой код создает эти ненужные объекты. Все, что я вижу, это то, что мое приложение выделяет много байтов [] и char [], но где, когда от какой функции? thats проблема – vach
GC не проблема, ее частота этого, которая вызывает проблемы, я хочу оптимизировать код, чтобы этот GC разбрасывался в 10 раз реже или больше ... Да, я могу читать весь исходный код, но я бы хотел получить инструмент, который мог бы анализировать и дать мне ключ, где создается мусор ... – vach