什么是直接内存(NIO)

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

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

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

相关推荐
码农娟6 分钟前
Hutool XML工具-XmlUtil的使用
xml·java
草青工作室13 分钟前
java-FreeMarker3.4自定义异常处理
java·前端·python
java1234_小锋23 分钟前
Java中读写锁的应用场景是什么?
java·开发语言
闻哥24 分钟前
从 AJAX 到浏览器渲染:前端底层原理与性能指标全解析
java·前端·spring boot·ajax·okhttp·面试
「QT(C++)开发工程师」26 分钟前
C++ 多种单例模式
java·c++·单例模式
短剑重铸之日30 分钟前
《SpringCloud实用版》统一认证授权:Spring Authorization Server + OAuth2 + JWT 生产级方案
java·后端·spring·jwt·oauth2
哲-哲1 小时前
WVP+ZLM搭建碰到问题
java
编程彩机1 小时前
互联网大厂Java面试:从Spring Cloud到分布式事务的技术场景解析
java·spring cloud·微服务·消息队列·分布式事务
黎雁·泠崖1 小时前
Java内部类与匿名内部类:定义+类型+实战应用
java·开发语言
青槿吖1 小时前
第二篇:JDBC进阶骚操作:防注入、事务回滚、连接池优化,一篇封神
java·开发语言·jvm·算法·自动化