栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有一种方法可以仅使用Java从指针创建直接ByteBuffer?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有一种方法可以仅使用Java从指针创建直接ByteBuffer?

我要做的是创建一个普通的DirectByteBuffer并更改其地址。

Field address = Buffer.class.getDeclaredField("address");address.setAccessible(true);Field capacity = Buffer.class.getDeclaredField("capacity");capacity.setAccessible(true);ByteBuffer bb = ByteBuffer.allocateDirect(0).order(ByteOrder.nativeOrder());address.setLong(bb, addressYouWantToSet);capacity.setInt(bb, theSizeOf);

从这一点开始,您可以访问引用基础地址的ByteBuffer。我这样做是为了访问网络适配器上的内存以实现零拷贝,并且工作正常。

您可以直接为您的地址创建一个DirectByteBuffer,但这比较晦涩。


一种替代方法是使用Unsafe(仅适用于OpenJDK / HotSpot JVM和本机字节顺序)

Unsafe.getByte(address);Unsafe.getShort(address);Unsafe.getInt(address);Unsafe.getLong(address);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号