作为 Java 开发者,你需要了解的堆外内存知识(2)

举一个例子:在通信中,将存在于堆内存中的数据 flush 到远程时,需要首先将堆内存中的数据拷贝到堆外内存中,然后再写入 Socket 中; [原创文章:www.11jj.com]

如果直接将数据存到堆外内存中就可以避免上述拷贝操作,提升性能。类似的例子还有读写文件。 [原创文章:www.11jj.com]

目前,很多 NIO 框架 (如 netty,rpc) 会采用 Java 的 DirectByteBuffer 类来操作堆外内存,DirectByteBuffer 类对象本身位于 Java 内存模型的堆中,由 JVM 直接管控、操纵。

但是,DirectByteBuffer 中用于分配堆外内存的方法 unsafe.allocateMemory(size) 是个一个 native 方法,本质上是用 C 的 malloc 来进行分配的。

分配的内存是系统本地的内存,并不在 Java 的内存中,也不属于 JVM 管控范围,所以在 DirectByteBuffer 一定会存在某种特别的方式来操纵堆外内存。

3. 堆外内存创建过程深度解析

首先,我们来看一下 DirectByteBuffer 源代码,从中洞悉分配堆外内存的过程:

作为 Java 开发者,你需要了解的堆外内存知识(2)

3.1 第一个重要方法:Bits.reserveMemory(size, cap);

源代码如下:

自媒体 微信号:11jj 扫描二维码关注公众号
爱八卦,爱爆料。

小编推荐

  1. 1

    @全体师生 防灾减灾宣传周主题海报来了

    本年5月12日是第16个全国防灾减灾日主题是“人人讲平安、个个会应急——出力提拔下层防灾避险能力”5月11日至17日为防灾减灾宣传周国度防灾减灾

  2. 2

    名单出炉!莆田首支霹雳舞市级集训队名单确定

    近日由莆田市体育局荔城区文化体育和旅行局作为指导单元单子莆田市体育跳舞活动协会主办莆田市体育跳舞活动协会街舞专业委员会协办的“奔驰

  3. 3

    你的【福利】即将到账

    叮!我预备了【京东卡】要给你!你的【福利】即将到账!叮!你有一张【京东卡】待查收天色逐渐转暖,属于炎天的康乐就要回来了!大排档里黏

  4. 4

    优秀护士工作总结(优秀护士工作总结自参加工作以来)

    大家好,小丽今天来为大家解答优秀护士工作总结以下问题,优秀护士工作总结自参加工作以来很多人还不知道,现在让我们一起来看看吧!1、轻基

  5. 5

    《健康中国观察》封面文章,介绍苏州经验!

    《健康中国视察》2024年4月刊登载了题为《共建共享 健康姑苏——中国式现代化配景下的健康城市索求与实践》的封面文章聚焦姑苏健康城市扶植经

  6. 6

    送红包1314是什么意思(红包1314是多少钱)

    大家好,小乐今天来为大家解答送红包1314是什么意思以下问题,红包1314是多少钱很多人还不知道,现在让我们一起来看看吧!1、1314,即一生一世谐

  7. 7

    她打翻了上帝的水彩盒!太美了!

    Anna Armona 乌克兰艺术家她的水彩作品唯美、抽象且具有诗意那种布满着梦幻的色彩,灿烂斑斓,使人感受赞叹、震撼与晕眩!春:夏秋冬图文起原收

  8. 8

    辞退无固定期限合同员工的赔偿(辞退无固定期限合同员工的赔偿最高)

    大家好,小娟今天来为大家解答辞退无固定期限合同员工的赔偿以下问题,辞退无固定期限合同员工的赔偿最高很多人还不知道,现在让我们一起来

Copyright 2024.依依自媒体,让大家了解更多图文资讯!