什么是直接内存(NIO)

直接内存不受 JVM 内存回收管理,是虚拟机的系统内存,常见于 NIO 操作时,用于数据
缓冲区,分配回收成本较高,但读写性能高,不受 JVM 内存回收管理。
举例
当上传一个较大文件(200M)对比常规IO和NIO时。使用NIO(直接内存)的时间要远远低于常规IO的操作时长。
NIO是与JVM有一定关系的 。
传统IO的数据传输流程图如下

可以看到,当使用传统阻塞IO上传文件时,会在操作系统和java堆中的内存中都创建一个缓冲区进行磁盘文件的读写,这是非常耗时的。
直接内存NIO的数据传输流程图如下

可以看到
在这个里面主要使用到了一个直接内存,不需要在堆中开辟空间进行数据的拷贝,jvm 可以直接操作操作系统中的内存,从而使数据读写传输更快。

相关推荐
lcreek6 小时前
Java 反序列化漏洞深度解析(一):从URLDNS到真正的DNS探测
java·反序列化漏洞
杰克尼6 小时前
天机学堂复习总结(day03-day04)
java·开发语言·redis·elasticsearch·spring cloud
x***r1516 小时前
jdk-11.0.16.1_windows使用步骤详解(附JDK 11环境变量配置与验证教程)
java·开发语言·windows
弹简特7 小时前
【Java项目-轻聊】01-项目演示+项目介绍+准备工作+项目源码
java
tongluowan0077 小时前
jvm垃圾回收器 - CMS-已弃用的垃圾回收器
jvm·cms·垃圾回收器
luck_bor7 小时前
File类&递归作业
java·开发语言
武子康7 小时前
Java-07 深入浅出 MyBatis数据库一对多关系模型实战:表结构设计与查询实现
java·后端
REDcker9 小时前
Linux OverlayFS详解
java·linux·运维
Royzst10 小时前
xml知识点
java·服务器·前端
鱼鳞_10 小时前
苍穹外卖-Day08(缓存套餐)
java·redis·缓存