写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。
写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。
写该篇文章,主要是方便自己github的笔记引用图片(虽然网页版好像图片显示不出来,但是我自己都是clone下来后编辑的,所以没差)。
JConsole(Java Monitoring and Management Console)是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它的主要功能是通过JMX的MBean(Managed Bean)对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,典型的如中间件大多也基于JMX来实现管理与监控。虚拟机对JMXMBean的访问也是完全开放的,可以使用代码调用API、支持JMX协议的管理控制台,或者其他符合JMX规范的软件进行访问。
1. JConsole的界面如下:
2. 启动一个java进程,用JConsole监听
下面代码来自书籍,启动时指定虚拟机参数-Xms100m -Xmx100m -XX:+UseSerialGC
import java.util.ArrayList;
import java.util.List;
public class JConsoleTestCase {
/**
* 内存占位符对象,一个OOMObject大约占64K
*/
static class OOMObject {
public byte[] placeholder = new byte[64 * 1024];
}
public static void fillHeap(int num) throws InterruptedException {
List<OOMObject> list = new ArrayList<OOMObject>();
for (int i = 0; i < num; i++) {
// 稍作延时,令监视曲线的变化更加明显
Thread.sleep(50);
list.add(new OOMObject());
}
System.gc();
}
public static void main(String[] args) throws Exception {
fillHeap(1000);
}
}