博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用JVisualVM进行性能分析
阅读量:6088 次
发布时间:2019-06-20

本文共 1036 字,大约阅读时间需要 3 分钟。

地址:

连接

1、本地机器的程序直接可以监听到

2、远程机器的程序需要加上JVM参数

-Dcom.sun.management.jmxremote= true
-Dcom.sun.management.jmxremote.port= 9090
-Dcom.sun.management.jmxremote.ssl= false
-Dcom.sun.management.jmxremote.authenticate= false

备注:另外需要检查

hostname –i

看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。

这里有个分析案例,利用jvisualvm分析tomcat的问题:

 

插件安装

tools->plugin->Available Plugin 会有值得安装的插件,如: JConsole

 

插件列表:

 

注意:上面提供的端口配置有些麻烦,不如直接这样做:

要使用 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误

而启动 jstatd 时会有一个权限问题,需要做如下修改:

nano /opt/sun-jdk- 1.6 . 0.26 /jre/lib/security/java.policy

Java代码  
  1. nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy  
nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy

增加下列行

Java代码  
  1. grant codebase "file:${java.home}/../lib/tools.jar" {  
  2.  permission java.security.AllPermission;  
  3.   
  4. };  
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission;};

 

然后启动 jstatd并且不要关闭

如:

 

 

Threads

查看线程的运行情况,运行、停止、睡眠、等待,根据这些结合实际程序运行的逻辑分析。

找到可疑份子,可以Thread Dump  找出具体是哪个线程在作祟。

参看这个例子:

profile

关于如何使用,如何分析程序,可以参看这个例子:

转载地址:http://arpwa.baihongyu.com/

你可能感兴趣的文章
mysql之多表查询的其他查询
查看>>
一个popup弹窗实现思路--(基于mintui分析)
查看>>
手写一个WPF-MVVM
查看>>
系统组件:警告对话框AlertDialog(1)
查看>>
jquery下removeClass(“oldClassName”).addClass("newClassName")的问题
查看>>
uwsgi ini 设置
查看>>
CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
查看>>
archer 安装
查看>>
ORA-01033: ORACLE initialization or shutdown in progress
查看>>
二维指针与二维数组研究
查看>>
hiho一下 第三十九周 归并排序求逆序数
查看>>
Subsets and Subsets II (回溯,DFS,组合问题)
查看>>
go语言中的接口interface
查看>>
iOS 无证书真机调试
查看>>
openssl实现公私钥证书生成以及转换
查看>>
[原]把一个简单计算器做成Web自定义控件
查看>>
Uboot分析(四)
查看>>
死锁与活锁的区别,死锁与饥饿的区别
查看>>
Python 爬虫练手项目—酒店信息爬取
查看>>
你还在用notifyDataSetChanged?(首发于安卓巴士)
查看>>