观察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差不多:
