【发布时间】:2016-11-10 00:46:58
【问题描述】:
最近我一直在寻找一种将大量数据存储在内存中用于科学计算的方法。我看过scala-offheap 和LArray。我注意到的一件事是,如果我有一个在本机 Java 数组上运行的现有函数,我不能直接将它应用到堆外数组上。这两个库都需要从堆外数组复制到普通数组。
我不知道这是内存模型的真正限制,还是仅仅是库 API 施加的限制。是否可以获得堆外数组的 Java 数组“视图”?
【问题讨论】:
-
不,这是不可能的
-
“堆外”和“Java 数组”是矛盾的,因为根据定义,Java 堆是所有 Java 对象的内存区域。由于这个形式方面没有直接的技术后果,因此问题出现了,您希望通过这种自相矛盾的愿望实现什么。到目前为止,您所说的是,您想要“将大量数据存储在内存中”。使用堆有什么问题?