利用jvisualvm分析JVM,进行性能调优
什么是jvisualvm?
jvisualvm是JDK自带分析工具。
可分析JDK1.6及其以上版本的JVM运行时的JVM参数、系统参数、堆栈、CPU使用等信息。可分析本地应用及远程应用。
在JDK1.6以上版本中自带。
工具在哪找?
在jdk包中:%JAVA_HOME%binjvisualvm.exe
怎么用?
1.进入JVM进程
进入工具后,在工具左侧即可选中当前运行的JAVA进程,双击可查看进程详情。
2.查看运行环境及JVM参数
3.查看JVM垃圾回收、进程等
主要是为了查看垃圾回收次数,频繁的垃圾回收对系统性能也有影响。
4.分析应用性能
利用这个工具分析应用性能效果杠杠的,主要是利用抽样器统计每个线程中,每个方法的执行时间,这样就能看到一次请求过程中,到底是哪个方法/查询导致响应时间长。
4.1点开抽样器,点击CPU,进行CPU抽样
4.2抽样一段时间后,点击快照,对从点击抽样开始的这段时间,进行CPU使用的统计。
4.3然后就能看到这段时间里,每个方法被使用的总时间以及时间占比啦,调用堆栈可一直追踪至native方法。
这样就可以很轻松的分析出,到底是哪个方法占了我宝贵的时间!
5.分析远程应用
如果要分析远程应用,需要远程服务暴露JMX服务,然后本地再用该工具进行连接。所以需要对远程服务的JVM启动参数进行配置。
5.1在JVM启动参数中增加JMX配置:
#建立链接的端口 JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8090" #不启用ssl JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS" #不启用登陆验证 JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS" #rmiServer JAVA_OPTS="-Djava.rmi.server.hostname=10.137.126.42 $JAVA_OPTS" #启动命令 java $JAVA_OPTS -jar jarName.jar >/dev/null 2>&1 &
5.2注意服务器开放端口
远程服务启动后,除配置端口外,还会开放两个随机端口,本地服务还会访问这两个随机端口,所以在有网络权限限制的时候,需要把本地 -> 服务器高位端口(10000-65535) 都申请允许访问。
5.3最后本地远程添加主机,建立JMX链接即可。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python处理滑块验证的轨迹计算问题
在上一回中说了五行代码找图中滑块验证的缺口位置《python五行代码解决滑块验证的缺口距离识别,破解滑块验证》,本章讲轨迹相关的问题。 滑块验证核心是后台验证轨迹参数,效验轨迹取点的分布,正常情况是如下图的离散分布 如果横坐标x是时间、纵坐标y是位移,那么每个点的切线就是加速度,会发现这样的一个规律,加速度由小变大,再又大变小,这是最主要的特征之一。 速度的变化率如下: 对速度而言肯定是先加速在减速,但加速度不会是固定的,应该是变变加速和变变加速,不过目前实际应用中的情况来说,是以速度变化情况为主要判别依据,因为在以恒加减速度生成的轨迹应用中一样可以通过检测,就说明目前没有对是否恒定加速度来鉴别机器和人工。 知道上面的两点后我们就应该明白滑块验证的关键,并且可以预测它的下一步优化方式将是对加速度变化的验证,收集了两种轨迹生成方式:一种是以加减速为主的物理学生成方式,另一种是根据轨迹离散分布生成的数学生成。 defgenerate_tracks(S): """ :paramS:缺口距离Px :return: """ S+=20 v=0 t=0.2 forward_tracks=[] cu...
- 下一篇
C# 定时关机小程序
C# 定时关机小程序 1.打开VS2019,创建界面和按钮 2. 代码如下: private void button1_Click(object sender, EventArgs e) { downpc(txttime.Text); } private static void downpc(string time) { Process.Start("shutdown", "/s /t "+time); } private void button2_Click(object sender, EventArgs e) { Process.Start("shutdown", "-a"); } private void Form1_Load(object sender, EventArgs e) { } private void LinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("https://www.cnblogs.com/pi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启