开发大型Java项目时,我们难免会遇到内存泄漏、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。如果不作出处理,随着开发的进行,这些会是一个非常严重的隐患。今天介绍一下VisualVM的使用。(具体的检测数据分析在此不做过多阐述,只介绍工具的使用和基础分析)
我将从以下几个方面介绍该工具的使用:
准备工作
插件使用
基础分析
一、准备工作
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.启动jstard
[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
4.运行VisualVM
4.1添加远程服务
特别注意:
连接不上服务器时,请检查一下jstard 是否启动
连接不上服务器时,请检查防火墙是否屏蔽了该端口
二、插件使用
1.设置插件资源链接
2.示例
Visual GC是我添加的插件
三、基础分析
图片中我们看到的,Heap、Metaspace、Classes、Threads,分别是堆、元空间(jdk1.8之后)、类加载、线程