- 浏览: 3017555 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
前几天有同事问起,我本来印象中是有啥别的办法的,但想不起来了。
再看了看NIO相关部分的源码觉得貌似就这个办法靠谱(在Oracle/Sun的JDK上):
StackOverflow: Looking up how much direct buffer memory is available to Java?
通过反射获取java.nio.Bits类里的maxMemory与reservedMemory字段来达到观察的目的。
用Groovy演示一下:
虽说HotSpot VM有个VM参数叫做MaxDirectMemorySize,但实际上HotSpot VM并没使用这个参数,而是直接把它交给Java层,由NIO的Java部分来使用它。NIO的direct memory的分配和释放过程也没啥JMX之类的监控,完全是裸的,除了反射去暴力获取数据我还真不知道有啥办法了。
但这种暴力做法未必能持续靠谱。
例如说这里就有个patch稍微改变过Bits类的字段:http://cr.openjdk.java.net/~alanb/4837564/jdk/jdk.patch
反正是private的,改了也不需要通知普通的Java用户。
这么重要的数据居然没有合适的API去监控,真不爽…
再看了看NIO相关部分的源码觉得貌似就这个办法靠谱(在Oracle/Sun的JDK上):
StackOverflow: Looking up how much direct buffer memory is available to Java?
通过反射获取java.nio.Bits类里的maxMemory与reservedMemory字段来达到观察的目的。
用Groovy演示一下:
D:\sdk\groovy-1.7.6\bin>groovysh Groovy Shell (1.7.6, JVM: 1.6.0_26) Type 'help' or '\h' for help. ------------------------------------------------------------------------------- groovy:000> import java.nio.* ===> [import java.nio.*] groovy:000> Bits.reservedMemory ===> 0 groovy:000> Bits.maxMemory ===> 67108864 groovy:000> buf = ByteBuffer.allocateDirect(4096) ===> java.nio.DirectByteBuffer[pos=0 lim=4096 cap=4096] groovy:000> Bits.reservedMemory ===> 4096 groovy:000> Bits.maxMemory ===> 129761280 groovy:000> buf.direct ===> true groovy:000> buf.hasArray() ===> false groovy:000> buf.cleaner().clean() ===> null groovy:000> Bits.reservedMemory ===> 0 groovy:000> Bits.maxMemory ===> 129761280 groovy:000> quit
虽说HotSpot VM有个VM参数叫做MaxDirectMemorySize,但实际上HotSpot VM并没使用这个参数,而是直接把它交给Java层,由NIO的Java部分来使用它。NIO的direct memory的分配和释放过程也没啥JMX之类的监控,完全是裸的,除了反射去暴力获取数据我还真不知道有啥办法了。
但这种暴力做法未必能持续靠谱。
例如说这里就有个patch稍微改变过Bits类的字段:http://cr.openjdk.java.net/~alanb/4837564/jdk/jdk.patch
反正是private的,改了也不需要通知普通的Java用户。
这么重要的数据居然没有合适的API去监控,真不爽…
发表评论
-
The Prehistory of Java, HotSpot and Train
2014-06-02 08:18 0http://cs.gmu.edu/cne/itcore/vi ... -
MSJVM and Sun 1.0.x/1.1.x
2014-05-20 18:50 0当年的survey paper: http://www.sym ... -
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
class data sharing by Apple
2014-03-28 05:17 0class data sharing is implement ... -
Java 8与静态工具类
2014-03-19 08:43 16146以前要在Java里实现所谓“静态工具类”(static uti ... -
Java 8的default method与method resolution
2014-03-19 02:23 10340先看看下面这个代码例子, interface IFoo { ... -
HotSpot Server VM与Server Class Machine
2014-02-18 13:21 0HotSpot VM历来有Client VM与Server V ... -
Java 8的lambda表达式在OpenJDK8中的实现
2014-02-04 12:08 0三月份JDK8就要发布首发了,现在JDK8 release c ... -
GC stack map与deopt stack map的异同
2014-01-08 09:56 0两者之间不并存在包含关系。它们有交集,但也各自有特别的地方。 ... -
HotSpot Server Compiler与data-flow analysis
2014-01-07 17:41 0http://en.wikipedia.org/wiki/Da ... -
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?
2013-11-07 17:44 22264(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
对C语义的for循环的基本代码生成模式
2013-10-19 23:12 21752之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案 ... -
Java的instanceof是如何实现的
2013-09-22 16:57 0Java语言规范,Java SE 7版 http://docs ... -
oop、klass、handle的关系
2013-07-30 17:34 0oopDesc及其子类的实例 oop : oopDesc* ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48125刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ...
相关推荐
BIO,NIO,AIO,Netty面试题
NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有事件发生时,他会通知我们,传回一组SelectionKey,我们读取这些Key,就会获得我们刚刚注册...
java nio 附带例子 以及原理 java nio 附带例子 以及原理 java nio 附带例子 以及原理 java nio 附带例子 以及原理
and Direct Memory Access. Chapters 2 through 5 cover classic I/O APIs. You learn about the File and RandomAccessFile classes along with streams (including object serialization and externalization) and...
java nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socket
基于Groovy的NIO框架,仅供学习Java NIO使用。
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...
基于netty的nio使用demo源码
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...
NIO入门.chm NIO入门.chm NIO入门.chm
ll learn how to put these tools to work using examples of common, real-world I/O problems and see how the new features have a direct impact on responsiveness, scalability, and reliability. The book ...
第三,在 Java 7 中,NIO 有了进一步的改进,也就是 NIO 2,引入了异步非阻塞 IO 方式,也有很多人叫它 AIO(Asynchronous IO)
java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...
讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用
Java IO NIO and NIO 2 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn...
java NIO.zip
Java NIO系列教程(一) Java NIO 概述
Java NIO英文高清原版
Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...
NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍