java visualvm使用,JVM详解
概述VisualVM是一个免费的\可视化工具,集成了几个JDK命令行工具。它可以为您提供强大的分析能力来分析和调优Java应用程序的性能。
VisualVM提供的功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾收集器、执行内存和CPU分析,它还支持MBeans上的浏览和操作。VisualVM下载地址:http://visualvm.github.io/download.html
相比JConsole,感觉功能更强大,可以集成各种插件,功能更强大。Jconsole是VisualVM的子集。此外,VisualVM还有一个JConsole的插件;
和阿尔萨斯相比,它最大的特点绝对是图形。阿尔萨斯必须服从命令,而且命令很多,不好用(都是英文…),而且是JDK自带的。
对于eclipse和idea(VisualVM Launcher),有相应的插件可以在软件界面快速打开VisualVM。
对于性能分析,要点如下:
监控:实时CPU监控、内存监控、线程监控等监控;
Dump:从内存中获取当前状态数据,保存在文件中供后续分析,一般是线程信息的转储、类加载信息的转储、堆上对象的转储;
快照:cpu快照和内存快照;
分析:调用关系、运行时间、内存分配和使用情况、加载的类、已有对象信息等。程序中的函数。
JFR:你可以查看JFR的档案,也就是联合军委会的飞行记录。
VisualVM远程监控连接方法
VisualVM会自动检测本机正在运行的JVM并建立连接。本文主要介绍连接远程Linux服务器的配置方法。
VisualVM连接远程服务器有两种方式:JMX和jstatd,这两种方式都不能完美支持所有功能。比如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可以同时配置,按需选择。
Window的VisualVM需要安装一些插件:
配置Jstatd
配置安全策略
配置java安全访问,将以下代码保存为文件jstatd.all.policy,放在JAVA_HOME/bin中,内容如下:
“授权代码库”文件:${java.home}/./lib/tools.jar {
permission Java . security . all permission;
};
启动jstatd
cd $JAVA_HOME/bin
执行命令:
Nop。/j statd-j-djava . security . policy=j statd . all . policy-j-djava . RMI . server . hostname=192 . 168 . 206 . 130(192 . 168 . 206 . 130是您的服务器的ip地址,表示
这里需要注意的是,可以不指定后面的-j-DJ ava . RMI . server . hostname=192 . 168 . 206 . 130,但也有可能无法远程连接,所以我这样做了。
Jps命令来查看jstatd是否已经正常启动。
设置防火墙
除了将1099添加到防火墙规则中,您还需要找到另一个随机端口并将其添加到规则中。
执行
netstat -anp grep *jstatd
可以看到,除了1099之外,jstatd还监听端口53040,这被添加到规则中。添加方法参见2.5。
(注意:重启后,这个随机端口会改变)
如果担心配置可能影响远程连接,建议先关闭防火墙:/etc/init.d/iptables stop。
启动VisualVM,因为在配置JMX时已经添加了服务器节点。如果配置正确,VisualVM将自动检测jstatd连接并添加节点。
配置JMX
身份验证,远程连接启动的ssl参数
#指定主机名。通常,您需要再次指定主机名,否则连接将会失败。
-DJ ava . RMI . server . hostname=192 . 168 . 0 . 147
#指定主机名指定端口默认值:1099
-DCOM . sun . management . JMX remote . port=8899
#禁止ssl连接
-DCOM . sun . management . JMX remote . SSL=false
#禁止用户验证
-DCOM . sun . management . JMX remote . authenticate=false
#指定主机名。通常,您需要再次指定主机名,否则连接将会失败。
-DJ ava . RMI . server . hostname=192 . 168 . 0 . 147
#指定主机名指定端口默认值:1099
-DCOM . sun . management . JMX remote . port=8899
#禁止ssl连接
com . sun . management . JMX remote . SSL=false
#打开用户验证
com . sun . management . JMX remote . authenticate=true
#认证用户名密码
-DCOM . sun . management . JMX remote . password . file=/opt/home/李成武/JVM/management/JMX remote . password
#访问模式
DCOM。星期日管理。JMX遥控器。访问。file=/opt/home/李成武/JVM/management/JMX远程。接近
(jmxremote.access和jmxremote.password在JAVA_HOME\jre\lib\management下有模板)
进入tomcat/conf目录,执行
CP $ JAVA _ HOME/JRE/lib/management/JMX远程。密码。模板JMX遥控器。密码
CP $ JAVA _ HOME/JRE/lib/management/JMX远程。打开JMX遥控器。接近
进入雄猫安装目录安装找到catalina.sh文件,在卡塔琳娜_OPTS中的配置变更:
CATALINA _ OPTS=-xms 1024m-xmx 6144m-XX:heapdumponotofmemoryerror
-XX:PrintGCDetails-XX:PrintGCDateStamps
-春天。简介。活动=生产
-Xloggc:/data/logs/GC-` date % Y-% M-% d _ % H % M % S `。日志.
-XX:MaxPermSize=1024M
DCOM。星期日管理。JMX远程=真
-DJ艾娃。RMI。服务器。主机名=115。29 .206 .6
DCOM。星期日管理。JMX遥控器。端口=6666
DCOM。星期日管理。JMX遥控器。SSL=false
DCOM。星期日管理注释。SSL=false
DCOM。星期日管理。JMX遥控器。验证=假
-XX:解锁商业功能-XX:飞行记录器
第三种配置- SSL
参考:https://个文档。甲骨文。com/javase/1。5 .0/docs/guide/management/agent。html # SSL _ enabled
1、在服务器上使用工具创建密钥对
工具是爪哇岛平台自带的一个密钥和证书管理工具,使用工具创建密钥对:
keytool-genkey-alias jetty-keystore/opt/home/李成武/jvm/ssl/jettyKeyStore
按照提示输入相关信息(包括设定密码、姓、组织名等),这些信息是可以随便输入的,但从产品角度讲应该统一设定。输入的密码在今后操作中均需要使用。
2、导出公钥
keytool-export-alias jetty-keystore/opt/home/李成武/JVM/SSL/jetty keystore-file/opt/home/李成武/jvm/ssl/jetty.cert
3、将公钥导入至需要运行分析工具的机器。(我的是窗子放在Z:\jvm\ssl\jetty.cert)
键盘工具-导入
-别名jetty-密钥库Z:\ JVM \ SSL \ jetty密钥库-文件Z:\ JVM \ SSL \ jetty。确实的事情
4、修改码头的启动脚本
DCOM。星期日管理。JMX遥控器。SSL= true
并添加:
-DJ avax。网。SSL。keystore=/opt/home/李成武/jvm/ssl/jettyKeyStore
-DJ avax。网。SSL。密钥库密码=123456
* 5、使用如下参数启动VisualVM:
视觉VM-J-DJ avax。网。SSL。信任存储=Z:\ JVM \ SSL \ jetty密钥库
## 1、概述
应用程序和运行时环境的基本信息
![](https://s 2.51 CTO。com/images/blog/202209/19225128 _ 632881 f 06681971608。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
基本参数
PID:应用程序的进程身份
主机:应用程序运行的系统地址
主类:运行了主要的方法的类
参数:应用启动时所传递的参数信息
JVM:当前的虚拟机(Java虚拟机的缩写)信息
Java:当前使用的爪哇岛开发工具包信息
爪哇之家:JDK的位置
虚拟机(Java虚拟机的缩写)标志:启动爪哇岛开发工具包时虚拟机(Java虚拟机的缩写)使用的的标志
出现OOME时生产堆转储:当前出现OOME时生产堆倾销功能的开启/禁用状态
保存的数据
* 显示分析工具存储的当前应用程序的信息
* JVM参数:配置的虚拟机(Java虚拟机的缩写)启动的参数信息
* 系统属性:JVM运行的系统属性
## 2、监视
展示监听的当前应用程序的整体情况
![](https://s 2.51 CTO。com/images/blog/202209/19225128 _ 632881 f 09 FD 7777934。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
* CPU:CPU的使用百分比
* 内存:内存的占用情况,包括内存大小、最大值和已经使用的大小
* 堆:堆内存的大小和堆内存使用情况
*元空间:元空间内存的使用情况
* 类:显示了已经加载的类数量和共享类的数量
* 线程:显示了应用程序在虚拟机(Java虚拟机的缩写)中生存和守护线程的数量
* 堆转储:执行堆转储,在新的标签页打开,查看倾销的详细信息
![](https://s 2.51 CTO。com/images/blog/202209/19225128 _ 632881 f 08 a 01d 73350。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
## 3、线程
* 展示了应用程序的线程数据,包括所有线程数、活动线程数、完成线程数
![](https://s 2.51 CTO。com/images/blog/202209/19225128 _ 632881 f 08 f1 DD 25887。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
* 线程转储:执行线程转储,在新标签页打开结果
![](https://s 2.51 CTO。com/images/blog/202209/19225128 _ 632881 f 0c 20 fa 7031。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
## 4、抽样器
抽取中央处理器和内存的样例数据
设置——设置抽样参数
中央处理器抽样:
* CPU样例:展示了方法级别中央处理器性能(执行的时间及占比)
* 线程中央处理器时间:反映了线程执行占用中央处理器的时间和占比
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 F12 D1 a 365885png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
![](https://s 2.51 CTO。EDB 152号楼94700。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
* 堆柱状图:展示了内存占用情况
* 每个线程分配:展示了每个线程分配的内存以及占比
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f 16687749165。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f14d 18418443。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
# 5、简介
启动和停止本地应用程序的概要分析会话
CPU:点中央处理器按钮,启动一个中央处理器性能分析会话,显示中央处理器的使用率、方法的执行效率和频率等相关数据。
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f 14d 50 c 54556。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
内存:点击"内存"按钮将启动一个内存分析会话,等分析工具收集和统计完相关性能数据信息,将会显示在性能分析结果。
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f15 C5 c 655150。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
# 6、可视化乔治勋章
工具——》插件
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f 12589899117。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
就会出现视觉刚果民主共和国的标签
![](https://s 2.51 CTO。com/images/blog/202209/19225129 _ 632881 f 13 effb 17208。png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type _ zm fuz 3 poz w5 nagvpdgk=/resize,m_fixed,w_750)
www。cnblogs。com/baby 123/p/11551626。html](https://www。cnblogs。com/baby 123/p/11551626。html)
www。iteye。com/blog/soft beta-1264833](https://www .iteye。com/blog/soft beta-1264833)
www。cnblogs。com/gossip/p/6141941。html](https://www。cnblogs。com/gossip/p/6141941。html)
www。作废cn。com/article/p-glbjjqqe-XP。html](http://www。作废cn。com/article/p-glbjjqqe-XP。html)
我的。奥斯中国。net/yygh/blog/650507】(https://my。奥斯中国。net/yygh/blog/650507)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。