观察NIO的direct memory使用量?(JDK7)

前一篇: 观察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:
观察NIO的direct memory使用量?(JDK7)_第1张图片

观察NIO的direct memory使用量?(JDK7)_第2张图片

你可能感兴趣的:(java,jdk,oracle,.net,ITeye)