前一篇:[url=http://rednaxelafx.iteye.com/blog/1098791]观察NIO的direct memory使用量?[/url]
前一篇说的是在当前的Oracle/Sun JDK6上没啥好办法去监视NIO的direct memory使用量。不过这个问题在JDK7里其实已经有解决的。从JDK7 build 36开始就有了吧。
解决的方式就是:给NIO也带上JMX的监控API。这才是正道啊! :lol:
从[url=http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/f097ca2434b1/src/share/classes/java/nio/Bits.java]JDK7版的java.nio.Bits[/url]源码里可以看到注册MXBean注册的代码。
相关的MXBean有以下两个:
1. objectName: java.nio:type=BufferPool,name=direct
2. objectName: java.nio:type=BufferPool,name=mapped
两个的接口都是[url=http://download.java.net/jdk7/docs/api/java/lang/management/BufferPoolMXBean.html]java.lang.management.BufferPoolMXBean[/url]。
(注:在[url=http://mail.openjdk.java.net/pipermail/compiler-dev/2011-March/003079.html]这个更新[/url]之前,该接口是叫做java.nio.BufferPoolMXBean。如果读到较老的JDK7介绍文看到包名不一样的话,java.lang.management这个才是正式版会使用的版本。)
用法参考上面链接里的JavaDoc就好。获取这两个MXBean的实例的办法也跟其它MXBean差不多:
晒几张截图吧,[url=http://jdk7.java.net/download.html]JDK7 build 146[/url]里的JConsole:
[img]http://dl.iteye.com/upload/attachment/503457/bcfaecbc-d58b-3a8e-972d-cece0f894b1e.png[/img]
[img]http://dl.iteye.com/upload/attachment/503459/284ac12f-5c03-3064-9090-61ec64ca367e.png[/img]
前一篇说的是在当前的Oracle/Sun JDK6上没啥好办法去监视NIO的direct memory使用量。不过这个问题在JDK7里其实已经有解决的。从JDK7 build 36开始就有了吧。
解决的方式就是:给NIO也带上JMX的监控API。这才是正道啊! :lol:
从[url=http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/f097ca2434b1/src/share/classes/java/nio/Bits.java]JDK7版的java.nio.Bits[/url]源码里可以看到注册MXBean注册的代码。
相关的MXBean有以下两个:
1. objectName: java.nio:type=BufferPool,name=direct
2. objectName: java.nio:type=BufferPool,name=mapped
两个的接口都是[url=http://download.java.net/jdk7/docs/api/java/lang/management/BufferPoolMXBean.html]java.lang.management.BufferPoolMXBean[/url]。
(注:在[url=http://mail.openjdk.java.net/pipermail/compiler-dev/2011-March/003079.html]这个更新[/url]之前,该接口是叫做java.nio.BufferPoolMXBean。如果读到较老的JDK7介绍文看到包名不一样的话,java.lang.management这个才是正式版会使用的版本。)
用法参考上面链接里的JavaDoc就好。获取这两个MXBean的实例的办法也跟其它MXBean差不多:
List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
晒几张截图吧,[url=http://jdk7.java.net/download.html]JDK7 build 146[/url]里的JConsole:
[img]http://dl.iteye.com/upload/attachment/503457/bcfaecbc-d58b-3a8e-972d-cece0f894b1e.png[/img]
[img]http://dl.iteye.com/upload/attachment/503459/284ac12f-5c03-3064-9090-61ec64ca367e.png[/img]