最近,我一直在寻找一种将大量数据存储在内存中以进行科学计算的方法。我看过scala-offheap和LArray。我注意到的一件事是,如果我有一个在本机Java数组上运行的现有函数,则无法将其直接应用到堆外数组上;这两个库都需要从堆外阵列复制到普通阵列。
我不知道这是内存模型的真正限制,还是库API施加的限制。是否有可能获得堆外数组的Java数组“视图”?
最佳答案
jillegal声称能够做到这一点,但这基本上是一个大技巧,因为它违反了垃圾收集器的假设,并且依赖于特定的收集器在遇到这些违规时不会着火。对于生产用途来说,这可能不是一个好主意。
如果只需要访问原始类型,那么字节缓冲区是当前的抽象,它为堆上和堆外访问提供相同的API,但是必须一一提取字段。