java不安全,如何将内存解释为其他类型的对象?

时间:2014-09-10 21:11:22

标签: java memory unsafe

所以我已经阅读了一些文章,但主要是因为我想要一个快速的I / O,我想写一个双数组到一个文件。为此,我需要将其转换为字节数组。不幸的是,这会复制数据。

所以我想知道suing java不安全是否可以创建一个指向double []数组地址的byte []变量,只是将数据解释为字节而不是双精度数? 到目前为止我没有找到任何地方这样的例子,只有再次如何使用复制内存才能做到这一点。任何建议都表示赞赏!

1 个答案:

答案 0 :(得分:4)

如果你从ByteBuffer开始,你可以保留它的参考,并可以互换使用它们。

ByteBuffer bb = ByteBuffer.allocateDirect(8 * n_doubles);
DoubleBuffer db = bb.asDoubleBuffer();

由于使用了相同的内存,因此无法读取/写入bytedouble

如果要避免向文件添加其他副本,可以使用内存映射区域。

顺便说一句:ByteBuffer使用不安全,但以某种方式保护你。