JDK 自带的可视化工具
- VisualVM : $JAVA_HOME/bin/jvisualvm.exe
- JConsole : $JAVA_HOME/bin/jconsole.exe
这两款工具都很好用,JConsole 比较简单,但该有的功能都有;VisualVM 是官方推荐使用的工具,有一些功能要装上插件才能使用(不装插件还不如 JConsole),装插件很简单,就和 NotePad 一样集成了一个插件管理工具。
这两款工具的基本功能都能通过命令行工具来实现,如 jps,jstat,jinfo 等,但是不太推荐,用了也不知道出来的东西是什么(没有图形直观)。
VisualVM
- 最左边的就是当前 Java 程序运行的哪一些,相当于 jps。
- 右上方是基本信息,右下方是 jvm 参数和系统参数。
个人感觉有用的工具也就概述和 Viaual GC 两个 tab 页的功能有用,概述就是上面那张图的效果,Visual GC 需要装插件,在 工具 -> 插件 -> 可用插件 里面就可以安装了,效果如下:
- 左边的区域表示 元空间,老年代 和 新生代 的内存。
- 右边的 GC Time 需要关注的是 n collections 这个数据,这表示程序从运行开始到现在进行了多少次垃圾回收。
- 上图是 JDK8 下的显示效果,只有 JDK8 之前是没有 元空间 的,而是永久代。
在命令行下有几个命令推荐一下,也挺有用的
jps -l // 列出所有 Java 程序
java -XX:PrintFlagsFinal // 列出所有虚拟机默认选项,太多了,看看就行
javap -v Xxx.class // 读取字节码