80-10-020-原理-Java NIO-HeapByteBuffer
1.概述
Heap Buffer (堆缓冲区)
这是最常用的类型,ByteBuf将数据存储到JVM的堆空间中,并且将实际的数据存放到byte array中来实现。
优点:由于数据是存储在JVM的堆中,因此可以快速的创建与快速的释放,并且它提供了直接访问内部字节数组的方法。
缺点:每次读写数据时,都需要先将数据复制到直接缓冲区中再进行网络传输。
Direct Buffer (直接缓冲区)
在堆之外直接分配内存空间,直接缓冲区并不会占用堆的容量空间,因为它是由操作系统在本地内存进行的数据分配。
优点:在使用Socket进行数据传递时,性能非常好,因为数据直接位于操作系统的本地内存中,所以不需要从JVM将数据复制到直接缓冲区中,性能很好。
缺点:因为Direct Buffer是直接在操作系统内存中的,所以内存空间的分配与释放要比堆空间更加复杂,而且速度要慢一些。
Netty通提供内存池来解决込个向題。直接緩冲区并不支持通辻字や数組的方式来彷向数据。
重点:对于后端的业务消息的编解码来说,推荐使用HeapByteBuf; 对于I /0通信线程在读写缓冲区时,推荐使用
80-10-020-原理-Java NIO-HeapByteBuffer相关推荐
- Java NIO 系列教程
Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO. Java NIO提供了与 ...
- Netty学习(一)-- Netty 底层 Java NIO
视频地址,建议观看,老师由浅入深,循序渐进: https://www.bilibili.com/video/BV1py4y1E7oA 前面的学习:https://blog.csdn.net/weixi ...
- Java nio 异常_java.nio.BufferOverflowException 异常问题
系统运行一段时间,tomcat就会一直抛出下面的异常,造成系统不能访问,是什么原因? 2018-11-30 10:20:43,014 org.nutz.mvc.impl.processor.FailP ...
- java nio.Buffer的属性变化
java nio.Buffer的属性变化 认识Buffer Channel 提供从文件.网络读取数据的渠道,但是读取或写入的数据都必须经由 Buffer.Buffer,实际上是一个连续数组. 常用的 ...
- 【Java Netty】Java NIO position limit capacity 以及 BufferUnderflowException
1.概述 写这个主要是遇到了这个问题,然后去研究一下,参考了几个大牛的文章. 首先遇到的错误如下 Exception in thread "main" java.nio.Buffe ...
- Java NIO Selector , SelectionKey , SocketChannel , ServerSocketChannel
一 NIO介绍 1. NIO是非阻塞的 NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,rea ...
- java nio 李林峰_Netty堆外内存泄漏排查,这一篇全讲清楚了
上篇文章介绍了Netty内存模型原理,由于Netty在使用不当会导致堆外内存泄漏,网上关于这方面的资料比较少,所以写下这篇文章,专门介绍排查Netty堆外内存相关的知识点,诊断工具,以及排查思路提供参 ...
- 10分钟看懂, Java NIO 底层原理
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 写在前面 ...
- 10分钟看懂 Java NIO 底层原理
写在前面 很多的小伙伴,被java IO 模型,搞得有点儿晕,一会儿是4种模型,一会儿又变成了5种模型. 很多的小伙伴,也被nio这个名词搞晕了,一会儿java 的nio 不叫 非阻塞io,一会儿ja ...
- Java NIO原理 图文分析及代码实现
最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.可以参考: ...
最新文章
- mysql 硬解析 软解析_ORACLE sql语句的硬解析与软解析(收藏)
- 神秘又强大的@SpringBootApplication注解
- Can't create layer 289 of type Squeeze in function 'cv::dnn::dnn4_v20190902::LayerData::getLaye
- 目标检测之行人检测(Pedestrian Detection)基于hog(梯度方向直方图)--- 梯度直方图特征行人检测、人流检测2...
- Apollo分布式配置中心在java的简单实现
- sts(eclipse)安装svn插件
- 福州大学软工 1715 | K 班 - 启航
- 直播预告:与九位专家聊聊Codec和AOM Summit
- 一个DEMO让你彻底理解线程池
- 穷究链表(四)--链表实现前的思考
- Windows Phone开发(12):认识一下独具个性的磁贴 转:http://blog.csdn.net/tcjiaan/article/details/7313866...
- 直播 | IJCAI 2021论文解读:生理时间序列的分类方法及其在睡眠分期的应用
- 2016年我国网络安全态势
- 如何制作抖音卡点视频,使用预设制作酷炫转场
- C# 阿里云对象存储OSS创建、删除、上传代码实现
- Android -结束当前activity并返回上一个activity
- go开发中遇到的问题:the ntvdm cpu has encountered an illegal instruction
- centos代码切换图形_CentOS已死;微软将强行升级部分旧版本 Windows 10 用户;黑客远程打开莫斯科近3000个快递柜...
- 华为云正式推出区块链服务!区块链技术将在数字经济时代大放异彩
- 粤嵌GEC-6818