使用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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
最新文章
- windows2003安装证书服务:csp配置不正确、您没有此密钥容器的写访问权限
- Uvaoj 11624 - Fire!
- WinForm 窗体应用程序(初步)之一
- Android中使用Handler造成内存泄露
- android 百度地图开发
- 浅谈配置chrome浏览器允许跨域操作的方法
- Codeforces 706 C. Hard problem (dp)
- Python 基础【第九篇】运算
- 算法 - 求和为n的连续正整数序列(C++)
- jQuery DOM XSS漏洞
- MySQL报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
- [注意事项&;amp;车轮]java源代码 产生局部javadoc api档
- 关闭Excel提示文件格式和扩展名不匹配的警告框
- linux下使用自带mail发送邮件(超简单)
- com.android.dex.DexException: Multiple dex files define(jar包重复引用) 错误解决
- js三部曲---预编译
- Operating Systems (COMP2006)
- JAVA-try-catch-finally-自定义异常例子(适合初学者)
- 生产者消费者模式中条件判断是使用while而不是if
- Android -- 系统和自定义Notification
热门文章
- c++控制台 对齐 域宽
- 1.14不使用回车键来读取n个字符
- ACM-ICPC2018徐州网络赛 BE, GE or NE(对抗搜索+博弈+记忆化)
- ACM-ICPC2018徐州网络赛 Hard to prepare(dp)
- 327. Count of Range Sum(inplace_marge)
- Unite 2017 | 基于Animation Instancing的大规模人群模拟
- codevs1105 过河
- [Xcode 实际操作]五、使用表格-(10)插入UITableView单元格
- 剑指Offer的学习笔记(C#篇)-- 矩形覆盖
- LDAP第三天 MySQL+LDAP 安装