Создайте простое приложение Springboot, смоделируйте сценарий OOM, экспортируйте файл дампа кучи и проанализируйте его с помощью Mat.
Создайте простой Springboot для имитации сценариев OOM.
Создайте простой проект Springboot и циклически добавляйте объекты на уровне контроллера до OOM.
//循环添加对象,模拟OOM
List<UserVo> userVoListNew = new ArrayList<>();
for (int i = 0; i < 1024 * 1024 * 1024; i++) {
userVoListNew.addAll(userVoList);
}
Конкретный адрес кода, пока mysql и redis запускаются локально (вообще полсигареты можно запустить напрямую докером, что удобно и быстро):Таким образом git ee.com/effect/ не чуть-чуть...
Настроить идею и экспортировать файл дампа
1. Настройте параметры виртуальной машины идеи
Установите максимальный объем памяти в параметрах виртуальной машины и укажите расположение файла дампа.
-Xmx512m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/Users/yclxiao/Desktop/java_error_in_idea.hprof
2. Запустите проект
Начните проект, SWARGER вызывает метод USERCONTROLLER и ждет ООМ, чтобы появиться. Наконец, он появится в настроенном местеjava_error_in_idea.hprof
документ.
Файл дампа анализа мата
Установить анализатор памяти
ссылка для скачивания:woohoo.eclipse.org/toilet/down ОА…
импортировать файл дампа
Когда вы импортируете файл дампа, вы можете столкнуться с последующей ошибкой:
An internal error occurred during: "Parsing heap dump from '/Users/yclxiao/Desktop/heapdump-1586847376115.hprof'".
Java heap space
Решение: изменитьApplications/mat.app/Contents/Eclipse/MemoryAnalyzer.ini
Максимальная конфигурация памяти в
Примечание: Половина сигареты находится на платформе Mac, а расположение файлов оконной платформы немного отличается Друзья, найдите сами, ха-ха!
Анализ файлов дампа
1. Обзор мат-анализа
Размер экспортированного файла дампа составляет около 400 М. После анализа MAT вы увидите круговую диаграмму, показывающую самые крупные объекты.
2, нажмитеDominator Tree
& Leak Suspects
нажмитеDominator Tree
Можно перечислить ранг самых больших объектов и объекты, которые они содержат. нажмитеLeak Suspects
Вы можете увидеть больше предполагаемых утечек и обзор системы.
3. НажмитеDominator Tree
Вы можете видеть самый большой Object[], а объект, который он держит, отображается слева Согласно этому UserVo, мы, вероятно, можем проверить конкретное место кода.
4. НажмитеLeak Suspects
Который, вероятно, может увидеть поток запросов, который увидел большой объект, увидеть, какой конкретный бизнес-код, есть стеки информации, как правило, на основе этой информации можно быстро найти проблемный бизнес-код.
Суммировать
В этой статье представлены общие методы анализа OOM. Если вы столкнулись с проблемами в сети, сначала стабилизируйте и не паникуйте, сохраните поток (установите расположение дампа OOM) в первый раз, затем перезапустите службу, а затем используйте инструмент Mat для анализа проблемы.
Конечно, проблема может возникнуть и в других местах.Если вы столкнулись с проблемой с половиной сигареты, вы обычно запускаете три команды top, df и free.Во-первых, посмотрите на процессор, жесткий диск, память и т. д. машины, а затем сделать последующий анализ.
Если у вас есть больше хороших предложений, добро пожаловать в общение со мной.