`
RednaxelaFX
  • 浏览: 3049378 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
前一篇:观察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
分享到:
评论

相关推荐

    Java堆外内存的使用Java开发Java经验技巧共5页

    堆外内存,也被称为直接内存(Direct Memory),是指不在JVM的堆内存中分配的内存,而是直接在操作系统的本地内存中进行分配。这样可以避免Java对象创建时的额外开销,例如垃圾收集的检查和内存分配的慢速。 1. **...

    JVM 32 道面试题及答案.docx

    JDK7 把放在永久代的字符串常量池、静态变量等移出,JDK8 中永久代完全废弃,改用在本地内存中实现的元空间代替,把 JDK7 中永久代剩余内容(主要是类型信息)全部移到元空间。 其他: 1. 运行时常量池(Runtime ...

    Java内存溢出解决办法

    3. **优化代码**:减少不必要的对象创建,及时释放不再使用的资源,优化数据结构,避免大数据量一次性加载等。 4. **调整JVM参数**:根据应用需求合理配置JVM内存参数,避免内存分配不足或过大导致的浪费。 5. **...

    Netty 25道面试题你和答案.docx

    5. **稳定性**:修复了JDK NIO的已知问题,减少了开发中的困扰,保证了应用的稳定性。 6. **活跃社区**:频繁的版本更新和快速的BUG修复,持续引入新的功能。 Netty 使用简单的原因在于: 1. 高度封装了IO操作,...

    JVM入门总结 .pdf

    6. 直接内存(Direct Memory):并非由JVM直接管理的内存区域,它与Java堆内存区分开来,通过NIO类库进行直接内存的分配。 二、内存管理机制 1. StringTable:JVM中的常量池用于存储编译期生成的各种字面量和符号...

    JVM 32道面试题和答案.docx

    7. **直接内存(Direct Memory)**:虽然不在JVM的运行时数据区内,但直接内存对性能有显著影响。NIO引入的直接内存允许程序直接在堆外分配内存,减少数据复制,但受制于系统总内存和处理器寻址空间。过度使用直接...

    JVM面试复习.pdf

    #### 直接内存(Direct Memory) - **描述**:非JVM运行时数据区的部分,JDK1.4引入NIO,可直接分配堆外内存,通过DirectByteBuffer对象作为引用。使用本地函数库直接分配,避免了Java堆和Native堆之间的数据交换,...

    JVM与Hadoop介绍

    - **直接内存(Direct Memory)**:不在JVM内存区内,通过`java.nio.ByteBuffer.allocateDirect()`方式分配内存。 ##### 2. HotSpot运行时数据区域关系图 HotSpot虚拟机是Sun Microsystems开发的一款高性能的JVM实现...

Global site tag (gtag.js) - Google Analytics