Java NIO Buffer概念

针对每一种基本类型的 Buffer ,NIO 又根据 Buffer 背后的数据存储内存不同分为了:HeapBuffer,DirectBuffer,MappedBuffer。

HeapBuffer 顾名思义它背后的存储内存是在 JVM 堆中分配,在堆中分配一个数组用来存放 Buffer 中的数据。

public abstract class ByteBufferextends Bufferimplements Comparable<ByteBuffer>
{// Cached array base offsetprivate static final long ARRAY_BASE_OFFSET = UNSAFE.arrayBaseOffset(byte[].class);// These fields are declared here rather than in Heap-X-Buffer in order to// reduce the number of virtual method invocations needed to access these// values, which is especially costly when coding small buffers.//// 在堆中使用一个数组存放Buffer数据final byte[] hb;                  // Non-null only for heap buffers
}

DirectBuffer 背后的存储内存是在堆外内存中分配,MappedBuffer 是通过内存文件映射将文件中的内容直接映射到堆外内存中,其本质也是一个 DirectBuffer 。

由于 DirectBuffer 和 MappedBuffer 背后的存储内存是在堆外内存中分配,不受 JVM 管理,所以不能用一个 Java 基本类型的数组表示,而是直接记录这段堆外内存的起始地址。

public abstract class Buffer {...// Used by heap byte buffers or direct buffers with Unsafe access// For heap byte buffers this field will be the address relative to the// array base address and offset into that array. The address might// not align on a word boundary for slices, nor align at a long word// (8 byte) boundary for byte[] allocations on 32-bit systems.// For direct buffers it is the start address of the memory region. The// address might not align on a word boundary for slices, nor when created// using JNI, see NewDirectByteBuffer(void*, long).// Should ideally be declared final// NOTE: hoisted here for speed in JNI GetDirectBufferAddress// //堆外内存地址long address;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【经验分享】免费版虚拟机VMware Workstation Pro 17下载方式

【经验分享】免费版虚拟机VMware Workstation Pro 17下载方式 前言一、免费虚拟机下载方式二、 安装过程总结 前言 我真的是服了&#xff0c;现在的CSDN时效性为什么这么差了。都快一个月了还没有博主更新个人免费版虚拟机VMware Workstation Pro&#xff0c;甚至很多人还不知…

【运维】使用 Docker Compose 快速启动项目全流程指南

文章目录 docker-compose启动项目流程1. 安装 Docker 和 Docker Compose2. 准备 Docker Compose 文件3. 启动 Docker Compose 服务4. 检查运行状态5. 停止服务示例 docker-compose.yaml 文件 为什么要用docker-compose1. 微服务架构的实现2. 依赖管理3. 简化开发和测试环境4. 方…

RFID技术在汽车轮胎加工工艺中的革新应用

RFID技术在汽车轮胎加工工艺中的革新应用 物联网技术的飞速发展&#xff0c;无线射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术因其独特的优势&#xff0c;在各行各业中展现出巨大的应用潜力。特别是在汽车制造业&#xff0c;RFID…

推荐一款好用的浏览器翻译插件——欧路翻译

近些年&#xff0c;机器翻译的效果越来越好&#xff0c;于是也有更多的开发者&#xff0c;开发了免费使用的浏览器翻译插件。这大大的帮助了我们查看国外的网站&#xff0c;有利于大家获取更多的信息。 在此&#xff0c;给大家推荐一款免费好用的浏览器插件——欧路翻译。支持…

我在高职教STM32——LCD液晶显示(4)

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…

[经验] 如何做虾炒白菜 #学习方法#知识分享

如何做虾炒白菜 虾炒白菜的做法 虾炒白菜是一道营养丰富且美味可口的菜肴&#xff0c;虾肉的鲜嫩与白菜的甜脆相结合&#xff0c;口感极佳。接下来&#xff0c;让我们一起来学习一下虾炒白菜的详细做法。 食材准备 虾&#xff1a;约200克&#xff08;选用新鲜活虾&#xff…

【深度学习】python之人工智能应用篇——视频生成技术

视频生成技术是一种基于深度学习和机器学习的先进技术&#xff0c;它使得计算机能够根据给定的文本、图像、视频等单模态或多模态数据&#xff0c;自动生成符合描述的、高保真的视频内容。这种技术主要依赖于深度学习模型&#xff0c;如生成对抗网络&#xff08;GAN&#xff09…

基于 Native 技术加速 Spark 计算引擎

本文整理自 2024 年 6 月 DataFunSummit 2024 OLAP 架构峰会 Lakehouse 湖仓一体化架构论坛的同名主题分享。 今天分享的主题是基于 Native 技术加速 Spark 计算引擎&#xff0c;大家将会了解到如何基于 ClickHouse 来改造 Spark 引擎&#xff0c;最终获得较为可观的性能提升。…

C++实现多线程安全的生产者消费者字节缓冲区

文章目录 介绍实现细节**BytesBuffer 类****生产者和消费者** 性能优化总结 介绍 本文介绍如何使用C实现一个多线程安全的简单字节缓冲区&#xff0c;并进行性能测试。 实现细节 BytesBuffer 类 BytesBuffer 类通过使用条件变量和双缓冲区机制&#xff0c;实现了生产者和消…

【Linux】 在 Linux 中更换主机名

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 &#x1f3b5; 王心凌《那年夏天宁静的海》 在 Linux 系统中&#xff0c;更换主机名是系统…

使用Redis Lua脚本实现高级限流策略

引言 在现代的Web应用中&#xff0c;限流是一个非常重要的功能&#xff0c;它帮助我们控制对某些资源的访问频率&#xff0c;以防止系统过载和滥用。Redis是一个高性能的键值存储系统&#xff0c;它的原子操作和Lua脚本功能为实现复杂的限流策略提供了强大的支持。本文将详细介…

day50 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列

1143. 最长公共子序列 提示 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删…

大腾智能,基于云原生的国产工业协同平台

大腾智能是一家基于云原生的国产工业软件与数字化协同平台&#xff0c;专注于推动企业数字化转型与升级&#xff0c;为企业提供一系列专业、高效的云原生数字化软件及方案&#xff0c;推动产品设计、生产及营销展示的革新&#xff0c;实现可持续发展。 大腾智能旗下产品 3D模型…

USB2.0学习4--USB包结构和包类型

目录 1. USB包基本结构 1.1 SOP域&#xff08;Start Of Packet&#xff09; 1.2 SYNC域&#xff08;同步域&#xff09; 1.3 PID域&#xff08;标识域&#xff09; 1.4 地址域&#xff08;ADDR&#xff09; 1.5 帧号域&#xff08;Fram&#xff09; 1.6 数据域&#xff…

前端也需要知道的一些常用linux命令

前端也需要知道的一些常用linux命令 1.问题背景2.连接工具&#xff08;SecureCRT_Portable&#xff09;a.下载工具b.连接服务器c.登录到root账户 3.基本命令a.cd命令和cd ..b.ll命令和ls命令c:cp命令d.rm命令e:rz命令f.unzip命令g.mv命令h.pwd命令&#xff08;这里没有用到&…

机器学习之支持向量机丨神经网络测试

选择题 SVM中的什么是支持向量&#xff1f; 【 正确答案: D】 A. 数据集中的所有样本 B. 模型参数 C. 模型的预测输出 D. 训练数据中离决策边界最近的样本点 支持向量机(SVM)算法的主要目标是&#xff1a; 【 正确答案: C】 A. 最小化间隔 B. 最小化损失函数 C. 最大化间隔 D.…

【LinuxC语言】TCPIP的经典5层结构

文章目录 前言TCP/IP的结构结构示意图结构的含义生活中的TCP/IP例子总结前言 TCP/IP,全称传输控制协议/因特网互联协议,是用于在互联网上进行数据交换的一组协议,形成了互联网的基础。TCP/IP的经典五层结构包括:物理层、数据链路层、网络层、传输层和应用层。这些层次各自…

CSS 相对父级固定,且不随滚动条滚动

CSS 相对父级固定&#xff0c;且不随滚动条滚动 <div class"parent"><div class"child-one">我是固定位置的子元素</div><div class"child-tow">我是滚动的子元素</div> </div>.parent {height: 200px; /*…

以正合,以奇胜,守正出奇,稳健

个人感觉说实话&#xff0c;在所里待的这几年&#xff0c;尤其是后两年&#xff0c;收获颇多&#xff0c;不管是智识上的&#xff0c;还有一堆兄弟&#xff0c;还有愿意分享和帮助我的老师们。 不管是搞科研还是做生意&#xff0c;稳健&#xff0c;在所里的时候&#xff0c;有…

Python-天天基金网爬虫分析

1.主题式网络爬虫名称&#xff1a;天天基金网爬虫分析 2.主题式网络爬虫爬取的内容与数据特征分析&#xff1a;通过访问天天基金的网站&#xff0c;爬取相对应的信息&#xff0c;最后保存下来做可视化分析。 3.主题式网络爬虫设计方案概述&#xff08;包括实现思路与技术难点…