码迷,mamicode.com
首页 > 其他好文 > 详细

JVM【第三回】:【直接内存】

时间:2014-07-23 21:15:26      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:java   jvm   java虚拟机   直接内存   

    直接内存并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁的使用,而且也可能导致OutOfMemoryError异常出现,

    在JDK1.4中新加入了NIO类,引入了一种基于通道与缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。

    显然,本机直接内存的分配不会受到Java堆大小的限制,但是,既然是内存,则肯定还是会受到本机总内存的大小及处理器寻址空间的限制。服务器管理员配置虚拟机参数时,一般会根据实际内存设置-Xmx等参数信息,但经常会忽略掉直接内存,使得各个内存区域的总和大于物理内存限制,从而导致动态扩展时出现OutOfMemoryError异常。

欲知后事如何,且听下回分解

本文出自 “2377209” 博客,转载请与作者联系!

JVM【第三回】:【直接内存】

标签:java   jvm   java虚拟机   直接内存   

原文地址:http://2387209.blog.51cto.com/2377209/1508621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!