Понимание дампа кучи и дампа потока для крупномасштабного приложения

Я просматриваю несколько руководств по профилировщикам Java (JVisualVM, JProfiler, YourKit) на Youtube, а также на Pluralsight. У меня появилось небольшое представление о том, как проверить дамп кучи и как найти утечку памяти. Но эти все туториалы элементарны.

Мой вопрос таков: когда я анализирую дамп кучи, я вижу только 3 типа объектов char[], java.lang.String and java.lang.Object[], которые покрывают почти всю память (всегда более 70%). Но ни один из моего приложения. И точно так же для дампа потока я увидел запрос HTTP-8080 (порт, который я использую), и это привело меня к Runnable()'s run method or Java Concurrent Package, а не к какому-либо конкретному коду для моего проекта.

Я также обсудил проблему с некоторыми из моих друзей и проанализировал их приложение (которое не сталкивается с проблемами утечки памяти и производительности), но их результаты почти одинаковы.

Не могли бы вы, ребята, помочь понять, как анализировать дамп кучи и дамп потока в JVisualVM для крупномасштабного приложения? Любое видео, блог, что угодно было бы полезно.

Я использую OpenJDK-11, AWS ECS-Docker и Tomcat в качестве веб-сервера.


person mehtas    schedule 12.05.2020    source источник
comment
Это нормально, что строки занимают значительную часть памяти кучи. Учебники должны были показать вам, как вы можете идентифицировать объекты, ссылающиеся на эти строки.   -  person Holger    schedule 12.05.2020


Ответы (1)


Проверьте анализатор памяти Eclipse (https://www.eclipse.org/mat/), я использовал его в прошлом несколько раз, чтобы успешно найти утечки памяти, но требуется некоторое время, чтобы ознакомиться с ним.

Еще один совет, который я могу вам дать, — это создавать эталонные тесты с помощью Apache JMeter (https://jmeter.apache.org/) или другой инструмент, который позволяет воспроизвести проблему с производительностью/памятью и определить путь выполнения, вызывающий проблемы.

Имейте в виду, что AWS не любит, когда кто-то выполняет тесты производительности/проникновения для своих сервисов (https://aws.amazon.com/aup/)

person Latschesar Atanassov    schedule 12.05.2020