小白jvm之二-jvm可视化监控工具
小白jvm之二-jvm可视化监控工具
在jdk中就有jconsole.exe(图形化监控界面)在jdk/bin目录下,其真正的代码在lib包下的tools.jar
在cmd中输入jps即可查看当前运行的java进程
点击连接进入
import java.util.ArrayList;
import java.util.List;
public class JConsoleTest {
// public byte[] b1 = new byte[128 * 1024];//成员变量,垃圾回收机制不回收
public JConsoleTest() {
byte[] b1 = new byte[128 * 1024];// 局部变量,不被使用,垃圾回收机制会将其回收
}
public static void main(String[] args) {
try {
Thread.sleep(5000);//睡眠只是为了让你有时间去打开可视化监控工具0.0
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("start");//启动标志
fill(1000);
}
private static void fill(int n) {
List<JConsoleTest> jList = new ArrayList<>();
for (int i = 0; i < n; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
jList.add(new JConsoleTest());
}
}
}
可将上述代码中的局部变量和成员变量交替使用,再使用jvm可视化监控工具可看出,成员变量的内存,垃圾回收机制并没有回收,而是一直增加,直至代码运行结束;而局部变量的内存,垃圾回收则定时回收,成锯齿状。
注:进入可视化监控工具时,请选择正确的进程
以上是本人通过学习叶子猿老师的深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)学习笔记,若有问题,请及时联系我删除。