使用JDK自带工具进行性能分析

本文简述几种JDK常见的性能分析工具,并介绍其使用方法

带参数运行

在Elipcse中,进入运行配置页面,选择Argument,在下方虚拟机变量中加入verbose:gc参数可观察程序的gc情况,-XX:+PrintGCDetails参数可打印出gc的详细情况
使用JDK自带工具进行性能分析_第1张图片
其中GC表示Minor GC,Full GC表示Major GC,箭头前表示gc前占用内存,箭头后表示gc后占用内存,括号内为该带的总内存

几个命令行工具

运行java程序后,在命令提示符下输入命令,可检测程序的内存状况:
jps命令可查看当前运行的进程:
在这里插入图片描述
jstat -gc命令可查看进程的gc情况:
在这里插入图片描述
jstat -gcutil命令也可查看进程的gc情况:
在这里插入图片描述
jmap -heap命令可查看进程的堆内存使用情况:
使用JDK自带工具进行性能分析_第2张图片
包括堆配置、各带的使用情况
jmap -histo参数可查看类实例和内存占用情况
在这里插入图片描述
jmap -clstats可查询类装载器信息:
使用JDK自带工具进行性能分析_第3张图片

可视化工具VisualVM

在JDK目录的bin文件夹内包含了自带的VisualVM,不过在测试的过程中有很多bug,建议去官网下一个最新版
进入后可查看堆内存与metaspace占用:
使用JDK自带工具进行性能分析_第4张图片
使用JDK自带工具进行性能分析_第5张图片
已装载的类个数:
使用JDK自带工具进行性能分析_第6张图片

内存分析工具MAT

在VisualVM中点击堆内存(heap dump)可生成当前的堆内存分析文件,右键->保存可保存到本地,然后在Eclipse中点击工具栏 文件->打开,选择刚导出的堆内存文件,即可使用JDK的MAT工具分析堆内存。
MAT支持OQL查询语言,使用示例如下:
某类的所有对象实例:
select * from circularorbit.StellarSystem
在这里插入图片描述
大于特定长度 n 的 String 对象
使用JDK自带工具进行性能分析_第7张图片
大于特定大小的任意类型对象实例
使用JDK自带工具进行性能分析_第8张图片
所有包含元素数量大于 100 的 Collections 实例
使用JDK自带工具进行性能分析_第9张图片

你可能感兴趣的:(使用JDK自带工具进行性能分析)