使用JDK自带的VisualVM进行Java程序的性能分析
VisualVM是什么?
VisualVM是JDK自带的一个用于Java程序性能分析的工具,JDK安装完毕后就有啦,在JDK安装目录的bin文件夹下能找到名称为jvisualvm.exe。
要使用VisualVM分析您的应用性能,首先得让VisualVM识别出您的应用。Eclipse有个插件名叫“VisualVM Launcher for Eclipse”,可以帮助我们做到这一点。
Eclipse VisualVM Launcher的安装和配置
1. 从下面的链接下载VisualVM Launcher插件。下载完毕后,放到您本地Eclipse文件夹的plugins文件夹下。
http://visualvm.java.net/eclipse-launcher.html
你可以参考下图我本地的Eclipse文件夹。注意这个插件解压之后,应该有一个名叫site.xml的文件。
2. 在Eclipse里,菜单 “Help->Install New Software”, 点 “Local”, 把第一步下载的插件文件加载进去。
Plugin文件已经被成功识别出来,可以安装了。
3. 安装完毕,重启Eclipse,能在Eclipse的option里能看到一个新的关于VisualVM的界面了。我们需要告诉Eclipse我们JDK自带的VisualVM的可执行文件具体路径。这里根据JDK的路径指定即可。
注意JDK home可别错误指定成JRE的路径了,否则Eclipse也会贴心地弹出错误提示:Error Starting VisualVM:You are running VisualVM using Java Runtime Environment(JRE)。
使用VisualVM进行性能测试
右键单击您的Java项目,从右键菜单里选择“Run as”->”Run configuration”, 创建一个新的应用程序启动配置。
因为前面我们已经成功安装了Eclipse VisualVM Launcher,所以此时发现除了Eclipse自带的Eclipse JDT launcher之外,多了一个VisualVM Launch的选项。
2. 假设我自己实现了一个快速排序算法,我想测一测它的性能。
首先我在下图代码第57行执行我的快速排序算法之处设置一个断点。
然后使用前一步创建的基于Eclipse VisualVM Launcher的应用程序启动配置,以调试模式启动我的Java应用。
断点触发,这样VisualVM就成功识别到了我的Java应用。点击Profiler标签页:
当前状态: profiling inactive.
点击CPU按钮:
现在Profile处于激活状态了。
3. 回到Eclipse,按F8结束应用程序的执行。应用程序一旦结束,VisualVM会立即扑捉到这个事件,并弹出一个窗口通知我们:
点Yes,就可以查阅VisualVM为我们产生的性能评测分析报告了。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【熵增教育】SpringBoot的配置外部化——熵增学院
在前面的课程中,我们给大家分享过SpringBoot精妙的启动配置,主要阐述的是spring的IoC容器在SpringBoot中的加载过程,并与传统项目中Spring的IoC容器加载过程进行了一个对比.我们在开发的过程中,除了IoC容器的配置之外,当然还有许多其他的配置,诸如数据库的链接信息,端口,以及项目的内部使用的一些个性化信息等.那SpringBoot是如何管理这些配置呢?我今天呢,就从以下这三个方面来给大家分享一下SpringBoot是如何管理配置信息的. 配置文件和属性获取 配置文件的名字、目录和优先级 传统的properties与YAML 1.配置文件和属性获 1.1 传统配置文件的值获取与SpringBoot中的值获取 在传统的项目里,我们的配置信息一般都写在配置文件中,然后关于spring需要的信息,我们就在spring的xml文件里引用,大略如下所示: classpath下的config里创建一个jdbc.properties jdbc.driverClassName=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql:/...
- 下一篇
下单接口调优实战,性能提高10倍
概述 最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本和测试成本也非常大。对于这种有挑战性的任务,我向来是非常喜欢的,因为在解决问题的过程中,可以学习到很多东西。 当时我只是知道下单接口慢,但是没人告诉我慢在哪里,也即是说,哪些瓶颈导致下单接口慢了。其实没人知道也没关系的,因为我们可以通过压测来找到具体的瓶颈。 下面会详细介绍一下,在本次压测中遇到的问题以及如何解决,期间用了什么工具。 用到的工具和环境 工具 Jmeter JAVA自带的jvisualvm JMX nmon 环境 腾讯云Mysql 腾讯云2核4g的服务器1台 找瓶颈 下单属于写接口,大部分情况下,瓶颈都出在DB里,程序可能都在等待DB锁的释放。为了验证这个想法,我们可以使用Jmeter和jvisualvm来验证一下。 为了监控服务器和服务器中JAVA进程,我们需要开启JMX,可以在JAVA进程启动的时候,添加如下几个参数: JMX_OPTS="-Dcom.sun.management.jmxremote.port=7969...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19