DirectByteBuffer
堆外内存(DirectByteBuffer),JVM有自己的内存模型,DirectByteBuffer是分配在非JVM内存中的内存。
下面我们带着三个问题去探讨:
1、堆外内存的作用是什么
2、堆外内存是如何分配与回收的,与JVM有什么关系
3、堆外内存使用原因以及会出现什么问题
1、堆外内存的作用
首先说下计算机系统有种技术叫DMA(Direct Memory Access),CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率.
1.用户进程发起数据读取请求
2.系统调度为该进程分配cpu
3.cpu向DMA发送io请求
4.用户进程等待io完成,让出cpu
5.系统调度cpu执行其他任务
6.数据写入至io控制器的缓冲寄存器
7.DMA不断获取缓冲寄存器中的数据(需要cpu时钟)
8.传输至内存(需要cpu时钟)
9.所需的全部数据获取完毕后向cpu发出中断信号
减少cpu中断,不用cpu拷贝数据,把数据拷贝这类工作从cpu中解放出来。
使用堆内内存,对于我们的JVM,发送数据读写的时候是这样子的