如何使用JVisualVM进行性能分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用JVisualVM进行性能分析相关的知识,希望对你有一定的参考价值。

1) 静态代码分析 :主要通过一些既有的代码编写规则,来分析目前代码是否存在一些安全漏洞或待优化的问题,可以通过自己的实际情况来对检查规则做相应的调整。

(2) 任务管理器 :快捷键:Ctrl+Shift+Esc ,我们通过使用Processes 和Performance 标签来从整体上进行判断,主要是通过观察我们软件的进程在执行过程中发生的CPU、内存、硬盘读写等指标的变化,因为其不具有日志记录功能,需要实时性地观察和多次尝试,目的就是在大方向上判断是否存在性能问题。

(3) 性能监视器 :Start -> Run -> Perfmon ,或从系统管理工具中打开,通过这个工具我们可以定制观察很多的详细参数变化情况,且界面是通过一个监视器来不断刷新数据,相对任务管理器的实时性而言,该工具会记录一段时间内的变化,有助于我们总结和观察参数的变化,并最终确定性能问题的根由。

(4) 探查事件 :在VS中集成有事件探查功能,VS2008中的位置为“分析 -> 启动性能向导 ”,我们可以选择不修改程序二进制代码的“采样 ”方式,也可以选择会修改二进制文件的“插装 ”方式,前者通过对CPU计数器的采样,来获取相应的计数器数据,而后者通过添加一些必要的处理函数来更加精确地观察函数的执行情况,可斟酌选择。我们会得到大量的分析数据,注意进行再次筛选。

(5) 代码覆盖 :主要是通过结合测试来达到对代码的检查范围,不一定代码覆盖率越高越好,关键是要根据自己的情况来制定合适的覆盖目标为宜。

(6) 命令行工具集成 :我们同样可以通过命令行工具执行一些第三方的测试工具,如VSInstr 、VsPerfMon 、VSPerfCmd 和VsPerfReport 工具等。 望采纳
参考技术A 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的问题:

http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安装

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

插件列表:https://visualvm.dev.java.net/plugins.html

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

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

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

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

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

增加下列行

Java代码
grant codebase "file:$java.home/../lib/tools.jar"
permission java.security.AllPermission;

;

然后启动 jstatd并且不要关闭

如:

Threads

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

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

参看这个例子:http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

profile

关于如何使用,如何分析程序,可以参看这个例子:http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/

如何使用jvisualvm进行cpu或内存抽样

参考技术A 方法/步骤
首先要进入jdk的安装目录bin目录下打开jvisualvm.exe

进入jvisualvm的主页,在主页有一个导航菜单,里面有VisualVM的使用介绍和使用案例,和常见的故障排除指南,在不了解VisualVM的情况下,建议先读一读VisualVM的手册

已抽样eclipse为示例展示操作步骤,双击eclipse(pid)点击【抽样器】进入抽样器页面

点击CPU按CPU开始收集性能数据,状态显示正在进行CPU抽样
默认是按照 热点-方法 降序显示, 点击标题【热点-方法】、【自用时间】就可改变排序方式

点击线程Dump 可生成线程Dump对线程堆进行分析

点击快照,进行快照取样

生成的抽样快照,记录着按CPU抽样开始到点击快照时刻的应用程序运行的状态,可用于问题的保存,分析。快照可以取出来另存为到其他目录文件。然后停止快照即可。

点击内存按内存进行内存数据收集

和CPUC抽样类似,安装使用内存的热点进行排序显示,有 堆柱状图和PermGen柱状图,可根据应用故障现象查看分析相关的类的内存使用情况,

点击快照生成按内存收集数据到点击快照时应用运行的状态,右键快照名称可另存到其他目录

选择是按CPU或内存来抽样收集数据要根据应用的故障现象来决定,如果应用的问题表现在CPU上那就收集CPU快照数据,如果表现在内存上就收集内存快照数据。

以上是关于如何使用JVisualVM进行性能分析的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JVisualVM进行性能分析

如何使用JVisualVM进行性能分析

如何使用JVisualVM进行性能分析

如何使用JVisualVM进行性能分析

JvisualVM的使用转载

使用jvisualVM对中间件进行性能分析