【发布时间】:2019-01-03 03:43:32
【问题描述】:
我正在尝试使用 Java 中的 2D int 数组来实现 2D 坐标系。我有 256MB 的内存限制,并且 2D 网格足够大,内存需求可以超过这个限制。是否有另一种数据结构可以做到这一点,同时消耗更少的内存?
(编辑:目的是通过为至少访问过一次的坐标设置标志来跟踪网格内的移动。)
【问题讨论】:
-
试试
java.nio.Buffer -
仅将部分保存在您当前正在使用的内存中(即视口或类似的东西)并将其余部分保存在存储中
-
这真的取决于你实际使用该数组做什么。您能否详细说明将哪种数据写入其中(也许您不需要完整的 32 位 int 类型),如何写入它(也许您不需要完全分配的数组,但可以使用动态映射,因为无论如何大多数索引仍然是空的),您如何从中读取(也许您可以将整个内容存储在某个地方,并且总是像其他人建议的那样加载一个特定的块来使用),以及任何其他可能有用的信息能够帮助你。
-
@MaxVollmer 我正在尝试跟踪您可以说的运动。每当访问 2D 网格上的某个点时,程序都会在这些坐标处设置一个标志,这样如果再次访问同一点,该标志就可以说明这一点。我可以使用
boolean数组,因为它只是一个真/假的东西,但即使这样也无助于内存问题。 -
请使用该信息更新您的问题。
标签: java arrays optimization multidimensional-array data-structures