При разработке крупномасштабных Java-проектов мы неизбежно столкнемся с такими проблемами, как утечки памяти и узкие места в производительности, такие как незадействованные соединения с файлами, сетями и базами данных, а также неоптимизированные алгоритмы. Если с ними не справиться, они могут представлять очень серьезную скрытую опасность по мере развития. Сегодня я расскажу об использовании VisualVM. (Здесь не будет подробно рассматриваться конкретный анализ данных обнаружения, будет представлено только использование инструментов и базовый анализ) Я расскажу об использовании этого инструмента со следующих аспектов:
- Готов к работе
- использование плагина
- Фундаментальный анализ
1. Подготовка
1. Среда Linux, в которой находится служба
[root@localhost ~]# cd /usr/java/jdk1.8.0_162/bin/
[root@localhost bin]# vim jstatd.all.policy
Добавьте следующий код:
grant codebase "file:/usr/java/jdk1.8.0_162/lib/tools.jar" { permission java.security.AllPermission; };
Уведомление
Имя файла jstatd.all.policy может быть названо само по себе, но оно названо в честь .policy.
/usr/java/jdk1.8.0_162/bin/ и /usr/java/jdk1.8.0_162/lib/tools.jar — мои пути к Java, замените их своими
2. Запустите jstar
[root@localhost bin]#./jstatd -J-Djava.security.policy=jstatd.all.policy-J-Djava.rmi.server.hostname=192.168.134.128 -p 3333 -J-Djava.rmi.server.logCalls=true
Уведомление
hostname=192.168.134.128 Пожалуйста, замените IP-адрес вашего собственного сервиса
-p 3333 можно заменить на указанный вами порт
3. Загрузите визуальную виртуальную машину
ссылка для скачивания:visualvm.github.io/
4. Запустите VisualVM
4.1 Добавить удаленную службу
обращать внимание:
- Если вы не можете подключиться к серверу, проверьте, запущен ли jstard
- Если вы не можете подключиться к серверу, проверьте, не блокирует ли брандмауэр порт
Во-вторых, использование плагинов.
1. Установите ссылку на ресурс плагина
В настоящее время я использую VisualVM версии 1.4.1, поэтому здесь используется ссылка на ресурсы плагина:визуальный VM.GitHub.IO/UC/release1…
Добавьте его самостоятельно в соответствии с версией, которую вы используете:визуальный центр VM.GitHub.IO/плагины…
2. Пример
- Visual GC — это плагин, который я добавил
3. Базовый анализ
То, что мы видим на картинке, Heap, Metaspace, Classes, Threads, это куча, метапространство (после jdk1.8), загрузка классов, поток