Direct Memory读写流程分析

简介: Direct Memory读写流程分析

之前我们看出来了直接内存和传统IO操作的区别,我们针对底层流程加以说明。

BybeBuffer方式

如图所示,我们一般的IO读取过程时,程序需由用户态切换成内核态,当从ByteBuffer中读取数据时,系统会先从磁盘把文件读取到系统内存区,再从系统内存读取到Java堆内存,需要多一次内存拷贝过程。

Direct Memory方式

Direct Memory方式情况下,Java程序会直接从系统内存中开辟一块内存空间,对应的是我们的ByteBuffer.allocateDirect(_256M);这句代码,这部分内存系统内存可以访问,Java程序也可以直接访问,直接就减少了交互过程,这个就是直接内存会工作快点的原因。

目录
相关文章
|
4月前
|
监控 安全 Java
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
117 2
|
5月前
|
缓存 索引
cpu缓存一致性问题---cache写策略
cpu缓存一致性问题---cache写策略
46 1
|
6月前
|
存储 缓存 监控
中间件Read-Through Cache(直读缓存)策略实现方式
【5月更文挑战第11天】中间件Read-Through Cache(直读缓存)策略实现方式
78 4
中间件Read-Through Cache(直读缓存)策略实现方式
|
6月前
|
存储 缓存 中间件
中间件Read-Through Cache(直读缓存)策略工作原理
【5月更文挑战第11天】中间件Read-Through Cache(直读缓存)策略工作原理
72 3
|
6月前
|
存储 缓存 监控
中间件Read-Through Cache(直读缓存)策略注意事项
【5月更文挑战第11天】中间件Read-Through Cache(直读缓存)策略注意事项
42 2
|
6月前
|
缓存 Java
直接内存(Direct Memory)牛刀小试
直接内存(Direct Memory)牛刀小试
39 0
|
6月前
|
存储 Java C#
C# | 使用Memory<T>高效地读写内存数据
Memory<T>是什么? 它是一种可变大小、可读写的内存块,可以安全地暴露给用户代码进行操作。 为什么要使用Memory<T>? 使用它有许多好处。最主要的是善用它可以提高代码的性能。因为Memory<T>是可变的,所以我们可以直接在内存中操作数据,而不需要进行额外的拷贝操作。 使用Memory<T>还可以减少垃圾回收的压力,因为我们不需要创建新的对象来存储数据。 Memory<T>还可以与Span<T>和ReadOnlySpan<T>类型一起使用,这些类型可以方便地对数据进行访问和操作。
111 0
|
存储 缓存 固态存储
【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…
【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…
|
存储 Java 调度
【JVM原理探索】分析堆外内存(Direct Memory)使用和分析
【JVM原理探索】分析堆外内存(Direct Memory)使用和分析
1423 0
【JVM原理探索】分析堆外内存(Direct Memory)使用和分析