Java VisualVM是Java的一个工具,它可视地提供了有关JVM软件的信息,并将多个监视、故障排除和性能分析实用程序组合到一个工具中。
它可以将其他功能(例如JConsole工具提供的某些功能)添加为可选插件,使用简单,几乎0配置,功能还是比较丰富的,几乎囊括了其它JDK自带命令的所有功能。
在jdk1.8的bin目录可以找到jvisualvm.exe
应用程序位置显示本地和远程的java进程。
选择一个进程,可以看到进程的信息,可以看到该线程的JVM参数
监视
显示CPU、内存、类、线程信息。
堆旁边的PermGen意思是永久代,是方法区的实现,
在JDK8中PermGen已经被Metaspace元空间取代。
打开一个jdk8程序。了可以看到metaspace。
还可以执行垃圾回收,生成堆dump。
抽样
分析方法消耗的CPU时间,找到哪个方法消耗时间多。
可以看到方法执行的累积时间,分别为自用时间百分比、自用时间、自用时间中消耗 CPU 的时间、总时间、总时间中消耗 CPU 的时间、样本数。
堆dump
应用上右键或者在监控处,点击堆dump,可以生成dump文件,表示当前应用状态,显示当前堆内的对象,进行内存分析。
profier
动态观察CPU和内存状态,查看方法占用的CPU时间和堆内存中的对象。