jvisualvm的使用


jvisualvm的使用
VisuaIVM(All-in-One Java Troubleshooting Tool)是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。是目前为止功能最强大的运行监测和故障处理工具。

1、Windows监控本地的JVM
1.1、首先需要配置JAVA环境

1.2、进入jvisualvm目录,路径:%JAVA_HOME%/bin下面的jvisualvm,双击jvisualvm.exe,弹出页面

 

 1.3、在上面界面中的”本地”中,选择需要监控的JAVA进程,点击连接

 

监控:显示的是当前系统的CPU、内存、类和线程的相关资源的使用情况。其中"堆dump"可以查看堆的详细状态,包括堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态。

线程:能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况

2、远程监控JVM(Tomcat示例)
远程服务器:centos7   中间件:Tomcat

3.1、服务端Tomcat配置
1、Tomcat的catalina.sh需要配置,重启tomcat

JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.authenticate=false"

备注

JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"   //指定jconsole连接的IP

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000" //指定jconsole连接端口

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"  //这句一定要添加,不添加就无法成功

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"  //关闭ssl认证

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"  //关闭用户密码认证

其他jar包应用,在启动文件中添加:

nohup java -Djava.rmi.server.hostname=10.1.1.145  -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.rmi.port=9000 -Dcom.sun.management.jmxremote.ssl=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar    xxx.jar &

2、修改/etc/hosts

注释掉127.0.0.1  

新增:10.1.1.145  localhost localhost.localdomain

 

3、查看9000端口是否有

$netstat -ntlp

 

4、jvisualvm监控

点击”文件”,选择“添加JMX连接”

 

 

 

jvisualvm使用密码进行访问
1、服务端配置中修改:authenticate=true

   -Dcom.sun.management.jmxremote.authenticate=true

   -Dcom.sun.management.jmxremote.pwd.file=     //指定正确的密码文件

JAVA_OPTS="$JAVA_OPTS  -Djava.rmi.server.hostname=10.1.1.145"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.port=9000"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.rmi.port=9000"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.ssl=false"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.authenticate=true"

JAVA_OPTS="$JAVA_OPTS  -Dcom.sun.management.jmxremote.pwd.file=/home/cg/java/jdk1.8.0_221/jre/lib/management/jmxremote.password"

2、将Jdk/jre/lib/management下的jmxremote.password.template,拷贝一份叫jmxremote.password。进去将内容全部删去,添加一行

monitorRole  123456   //(用户名,密码)

controlRole   123456  //(用户名,密码)

备注:monitorRole  和monitorRole  用户已在jmxremote.access配置(模板)

3、将jmxremote.password和jmxremote.access改成600权限,和所属该程序用户

chmod 600 jmxremote.access  jmxremote.password

4、jvisualvm使用用户名和密码访问(例如:controlRole/123456)

 

 因为未配置SSL,所以这里选是

 

正常监控:

 

其他:如不输入用户名和密码,会自动弹出需要用户名和密码

 

参考:https://www.jianshu.com/p/0308983dc04c

https://blog.csdn.net/qq_23986927/article/details/113242408
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jvisualvm是一个GUI工具,用于监视Java虚拟机的性能和内存使用情况,以下是使用jvisualvm的步骤: 1. 打开jvisualvm工具:在JDK安装目录下的bin文件夹中找到jvisualvm.exe并打开。 2. 连接到正在运行的Java应用程序:在jvisualvm主界面的左侧面板中,在“本地”或“远程”标签页中找到正在运行的Java应用程序,然后双击它。 3. 查看应用程序的运行状况:在jvisualvm的右侧面板中,可以查看应用程序的运行状况,包括CPU使用率、内存使用率、线程数等。 4. 分析内存使用情况:在jvisualvm的右侧面板中,选择“内存”选项卡,可以查看应用程序的内存使用情况,包括堆内存和非堆内存的使用情况、对象数量等。 5. 分析线程使用情况:在jvisualvm的右侧面板中,选择“线程”选项卡,可以查看应用程序的线程使用情况,包括线程数、线程状态等。 6. 分析类加载情况:在jvisualvm的右侧面板中,选择“类”选项卡,可以查看应用程序的类加载情况,包括已加载类的数量、加载类的时间等。 7. 分析垃圾回收情况:在jvisualvm的右侧面板中,选择“垃圾回收器”选项卡,可以查看应用程序的垃圾回收情况,包括垃圾回收器的类型、回收时间等。 总之,使用jvisualvm可以方便地监视Java应用程序的性能和内存使用情况,帮助我们分析和解决应用程序的性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值