Как узнать код создания мусорных объектов

1

Приложение создает 3 ГБ мусорных объектов, и это заставляет мусор собираться. Этот процесс создания мусора и последующего сбора повторяется каждые 30 минут. Я взял кучу кучи и смог идентифицировать Unreachable Objects, но нет способа идентифицировать код, создающий эти объекты UnReachable. Пожалуйста, дайте мне знать, если есть способ узнать, какой код отвечает за это, не покупая Jprofiler/YourKit.

  • 0
    В чем проблема? Что не так с собираемым мусором?
  • 0
    Этот процесс создания 3 ГБ мусора и его сбора повторяется каждые 30 минут. График памяти полон плотно упакованных гор. Я хотел бы, чтобы это было очень разреженным, с меньшей частотой GC и меньшим количеством мусора. Следовательно, необходимо знать, какая часть кода создает мусор
Показать ещё 3 комментария
Теги:
garbage-collection
jvm
heap-memory

2 ответа

1

Вы всегда можете использовать Java Flight recorder и Java Mission Control вместо Jprofiler/YourKit. Он поддерживается версией Oracle JDK 7 Update 40 (7u40) и далее. Если вы не на версиях ниже этого.

http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html

https://docs.oracle.com/javacomponents/jmc.htm

  • 0
    Да, я использую Java 7 обновление 51. Разве не коммерческая функция бортового самописца?
  • 0
    Посмотрите на раздел «Лицензирование» в приведенном ниже URL. infoq.com/news/2013/10/misson-control-flight-recorder . Там нет конкретной проверки, я считаю. Я помню, как использовал это некоторое время назад, чтобы оценить.
Показать ещё 1 комментарий
0

Вы можете попробовать взять кучу кучи и загрузить его в Инструмент анализа памяти: https://eclipse.org/mat/. Он должен дать вам несколько идей о том, что у вас есть много и, возможно, откуда они пришли.

  • 0
    Попробовал это. Дамп кучи помогает обнаружить недостижимые / ненужные объекты, но не их иерархию вызовов. Регистратор полета JDK 7 мне очень помог.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню