java大尺寸数组编程

  • 本文关键字:数组 编程 java java
  • 更新时间 :
  • 英文 :


如何在java中声明大小为10^9的数组?。我尝试过数组列表,但问题是我需要找到数组中的最小和最大元素,所以我需要将数组的第0个元素与数组的所有其他元素进行比较,并且我最初需要一些固定大小的数组,这在代码厨师的数组输入格式中是必需的。有人能帮忙吗?。我尝试使用长数组,但出现内存不足的错误。

Java数组的最大大小可以等于Integer.MAX_VALUE(或在某些情况下稍有不同的值),约为2.3*10^9,因此理论上可以创建这么大的数组。然而,由于10^9意味着前缀giga(为了更容易读取),因此阵列的大小至少为1GB(当使用byte[]时)。根据您使用的数据类型,阵列可能只占用太多内存(int[]可能已经占用4GB)。

您可以尝试使用-Xmx选项来增加JVM的最大内存(例如,为了允许最大4GB的内存,您可以使用-Xmx=4g),但您仍然受到可寻址内存(例如IIRC,32位JVM总共只能寻址最多4GB)和可用内存的限制。

或者,您可以尝试在多台机器或JVM上拆分阵列,并采用一些分布式方法。或者,您可以将数组写入(内存映射的)文件,并在内存中只保留数组的一部分。

然而,最好的方法可能是检查是否真的需要那么多内存。在许多情况下,使用一些巧妙的算法或结构可以显著降低内存需求。使用什么取决于你最终想要实现什么。

最新更新