- 浏览: 3049378 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (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的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差不多:
晒几张截图吧,JDK7 build 146里的JConsole:
前一篇说的是在当前的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:
发表评论
-
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 16278以前要在Java里实现所谓“静态工具类”(static uti ... -
Java 8的default method与method resolution
2014-03-19 02:23 10453先看看下面这个代码例子, 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 22396(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 21874之前有同学在做龙书(第二版)题目,做到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 48367刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ...
相关推荐
堆外内存,也被称为直接内存(Direct Memory),是指不在JVM的堆内存中分配的内存,而是直接在操作系统的本地内存中进行分配。这样可以避免Java对象创建时的额外开销,例如垃圾收集的检查和内存分配的慢速。 1. **...
JDK7 把放在永久代的字符串常量池、静态变量等移出,JDK8 中永久代完全废弃,改用在本地内存中实现的元空间代替,把 JDK7 中永久代剩余内容(主要是类型信息)全部移到元空间。 其他: 1. 运行时常量池(Runtime ...
3. **优化代码**:减少不必要的对象创建,及时释放不再使用的资源,优化数据结构,避免大数据量一次性加载等。 4. **调整JVM参数**:根据应用需求合理配置JVM内存参数,避免内存分配不足或过大导致的浪费。 5. **...
5. **稳定性**:修复了JDK NIO的已知问题,减少了开发中的困扰,保证了应用的稳定性。 6. **活跃社区**:频繁的版本更新和快速的BUG修复,持续引入新的功能。 Netty 使用简单的原因在于: 1. 高度封装了IO操作,...
6. 直接内存(Direct Memory):并非由JVM直接管理的内存区域,它与Java堆内存区分开来,通过NIO类库进行直接内存的分配。 二、内存管理机制 1. StringTable:JVM中的常量池用于存储编译期生成的各种字面量和符号...
7. **直接内存(Direct Memory)**:虽然不在JVM的运行时数据区内,但直接内存对性能有显著影响。NIO引入的直接内存允许程序直接在堆外分配内存,减少数据复制,但受制于系统总内存和处理器寻址空间。过度使用直接...
#### 直接内存(Direct Memory) - **描述**:非JVM运行时数据区的部分,JDK1.4引入NIO,可直接分配堆外内存,通过DirectByteBuffer对象作为引用。使用本地函数库直接分配,避免了Java堆和Native堆之间的数据交换,...
- **直接内存(Direct Memory)**:不在JVM内存区内,通过`java.nio.ByteBuffer.allocateDirect()`方式分配内存。 ##### 2. HotSpot运行时数据区域关系图 HotSpot虚拟机是Sun Microsystems开发的一款高性能的JVM实现...