介绍
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。
VisualVM 提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JVM 软件相关数据进行组织,并通过一种使您可以快速查看有关多个 Java 应用程序的数据的方式提供该信息。您可以查看本地应用程序或远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。
监控
如下图,监控页面分为4个模块
从下图中我们可以直观的查看cpu利用率和垃圾回收活动,然后是堆栈使用情况及类的加载和线程数量的变化情况。
左上角的图展示了CPU及GC的使用情况
右上角则显示整个项目的堆使用情况
左下角显示整个项目加载的类
右下角则显示整个项目的线程数目
线程
如下图,线程监分为上下两部分。上部分为线程的运行状况及运行时间等,下部分可以查看详情。
也可选中线程,点击右上角的 线程Dump查看线程详情,比如查看是否进入死锁