我正在通过优化生命游戏程序自学一些更高级的 Java。
到目前为止,我已经使用多线程和将世界的某些部分标记为“脏”来加快速度。 但是,World 数组目前是一个二维字节数组,创建一个远大于 30000*30000 的世界大小会导致 java 堆空间错误。 有什么更好的方法来存储非常大的二维 boolean 值/位数组?
最佳答案
您可以使用一个具有 30,000 x 30,000 位的大型 BitSet
。
但即便如此,内存消耗也会相当高,您可能会遇到严重的性能问题。可能需要使用仅包含整个世界的非空部分的稀疏数据结构的更聪明的解决方案。
另见 SparseBitSet .
关于java - 实现大型二维位数组的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313016/