前一篇:观察NIO的direct memory使用量?
前一篇说的是在当前的Oracle/Sun JDK6上没啥好办法去监视NIO的direct memory使用量。不过这个问题在JDK7里其实已经有解决的。从JDK7 build 36开始就有了吧。
解决的方式就是:给NIO也带上JMX的监控API。这才是正道啊!
从JDK7版的java.nio.Bits源码里可以看到注册MXBean注册的代码。
相关的MXBean有以下两个:
1. objectName: java.nio:type=BufferPool,name=direct
2. objectName: java.nio:type=BufferPool,name=mapped
两个的
接口都是java.lang.management.BufferPoolMXBean。
(注:在这个更新之前,该接口是叫做java.nio.BufferPoolMXBean。如果读到较老的JDK7介绍文看到包名不一样的话,java.lang.management这个才是
正式版会使用的
版本。)
用法参考上面链接里的JavaDoc就好。获取这两个MXBean的实例的办法也跟其它MXBean差不多:
List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
晒几张截图吧,JDK7 build 146里的JConsole:
- 大小: 105.5 KB
- 大小: 105.1 KB