Java不安全API是否支持从JVM原始数组到直接内存的memcpy?注意,现有的调用unsafe.copyMemory()从直接内存中的src复制到dst.我对散装直接内存的写入和读取感兴趣.
byte src[]=new byte[10];
unsafeRef.copyMemory( src,src_offset,directMemoryOffset,length );
最佳答案
TT – 谢谢你的回复.它让我进行了实验.内置函数unsafe.copyMemory会将对象从堆上复制到堆外.这是我的示例代码.我只对复制元素感兴趣所以我添加了16作为原始数组偏移.
byte b[]=new byte[N];
long addressOfObject=getAddressOfObject(unsafe,b);
unsafe.copyMemory(b,16,null,directOffset,N);
public long getAddressOfObject(sun.misc.Unsafe unsafe,Object obj) {
Object helperArray[] = new Object[1];
helperArray[0] = obj;
long baSEOffset = unsafe.arrayBaSEOffset(Object[].class);
long addressOfObject = unsafe.getLong(helperArray,baSEOffset);
return addressOfObject;
}
原文地址:https://www.jb51.cc/java/437251.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。