一、JVisualVM能做什么
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。
在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。
可以进行远程和本地监控。远程监控需要打开jmx,下面内容会提到。
其默认页面为:
左侧分为本地和远程。双击本地中VisualVM线程,可以看到如下监控内容:
二、准备模拟内存泄漏demo
- 1、定义静态变量HashMap
- 2、分段循环创建对象,并加入HashMap
import java.util.HashMap;
import java.util.Map;
public class CyclicDependencies {
//声明缓存对象
private static final Map map &