11-直接内存 Direct Memory
文章目录
- 直接内存 Direct Memory
- 非直接缓存区和缓存区
- 存在的问题
直接内存 Direct Memory
不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。
直接内存是在Java堆外的、直接向系统申请的内存区间。
来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存
通常,访问直接内存的速度会优于Java堆。即读写性能高。
- 因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。
- Java的NIO库允许Java程序使用直接内存,用于数据缓冲区
使用下列代码,直接分配本地内存空间
int BUFFER = 1024*1024*1024; // 1GB
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER);
非直接缓存区和缓存区
原来采用BIO的架构,我们需要从用户态切换成内核态
NIO的方式使用了缓存区的概念
存在的问题
也可能导致outofMemoryError异常
由于直接内存在Java堆外,因此它的大小不会直接受限于-xmx指定的最大堆大小,但是系统内存是有限的,Java堆和直接内存的总和依然受限于操作系统能给出的最大内存。
缺点
- 分配回收成本较高
- 不受JVM内存回收管理
直接内存大小可以通过MaxDirectMemorySize设置
如果不指定,默认与堆的最大值-xmx参数值一致
11-直接内存 Direct Memory相关推荐
- JVM学习笔记之-对象的实例化,内存布局与访问定位,直接内存(Direct Memory)
对象的实例化 对象的内存布局 图解 对象的访问定位 句柄访问 好处 reference中存储稳定句柄地址,对象被移动(垃圾收集时移动对象很普遍)时只会改变句柄中实例数据指针即可,reference本身 ...
- Thrift Direct Memory OOM问题解决方法 内存溢出问题
Thrift Direct Memory OOM问题解决方法 内存溢出问题 参考文章: (1)Thrift Direct Memory OOM问题解决方法 内存溢出问题 (2)https://www. ...
- 直接内存访问 (Direct Memory Access, DMA)
Table of Contents 直接内存访问 (Direct Memory Access, DMA) DMA 模型 设备 DMA 的类型 总线主控器 DMA 第三方 DMA 第一方 DMA 主机平 ...
- Tricks with Direct Memory Access in Java
2019独角兽企业重金招聘Python工程师标准>>> Java was initially designed as a safe, managed environment. Nev ...
- CUDA内存类型memory
CUDA内存类型memory 2013-09-30 10:34 4224人阅读 评论(1) 收藏 举报 分类: CUDA(106) http://www.cnblogs.com/traceorigin ...
- 11.JDK8内存模型、本地方法栈、虚拟机栈、栈帧结构(局部变量表、操作数栈、方法出口、虚拟机栈与本地方法栈的关系、寄存器、方法区、堆(Heap)、jvm中的常量池、Metaspace(元空间))
11.JDK8内存模型 11.1.本地方法栈(Native Method Stacks) 11.2.虚拟机栈(Java Virtual Machine Stacks) 11.3.栈帧结构 11.3.1 ...
- linux 内存管理 ppt,Linux内存管理 Memory Manager.ppt
<Linux内存管理 Memory Manager.ppt>由会员分享,可在线阅读,更多相关<Linux内存管理 Memory Manager.ppt(24页珍藏版)>请在人人 ...
- SQL Server 内存泄露(memory leak)——游标导致的内存问题
原文:SQL Server 内存泄露(memory leak)--游标导致的内存问题 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/07/01/sql ...
- 内存屏障 Memory Barriers
内存屏障 Memory Barriers 在上一篇文章中我们提到了编译时的内存序重排导致的问题以及解决方法,即添加编译器屏障或处理器屏障指令.这篇文章将探讨内存屏障的语义. 内存屏障的类型 Types ...
最新文章
- 2022-2028年中国碲化镉薄膜太阳能电池行业发展现状分析及投资前景趋势报告
- Linux中crontab定时执行python程序
- 《预训练周刊》第40期: 量子预训练、千层BERT与GPT
- rabbitmq 限制速度_技术干货分享:RabbitMQ消息积压的几种解决思路
- 关于select—页面中的ListBox的Javascript
- [shell] if else以及大于、小于、等于逻辑表达式
- 如果现在还要设计一个新系统,为什么选择 Kafka 而不是 RabbitMQ?
- 8266串口调试助手_200行Python代码实现串口调试助手(2) 界面构建
- Java 网络编程1
- Linux 文件编辑命令 详细整理
- java divide 用法_java中BigDecimal加减乘除基本用法
- 干货分享 | 史上最全Oracle体系结构整理
- php的类图怎么生成_PHP网站怎么划UML类图?
- html5画图论文结束语,基于HTML5 Canvas的画图板的设计与实现.doc
- linux pid t 头文件_Linux中 pid_t 类型的定义.
- 网站开发从陌生到了解
- linux发行版_看一看2020年最漂亮的Linux发行版
- python中减号怎么打_我的python将减号与破折号混淆
- nginx 配置443端口
- C4D学习笔记3-动画-动画渲染流程案例