如何在java中声明一个大小为10 ^ 9的数组?。我已经尝试了数组列表,但问题是我需要在数组中找到最小和最大元素,所以我需要将数组的第0个元素与其他所有元素进行比较数组的元素和我最初需要一些固定大小的数组,这是code-chef的数组输入格式所需要的。有人可以帮忙吗?我尝试使用长数组,但它给出了内存错误。
答案 0 :(得分:2)
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上拆分阵列,并采用一些分布式方法。或者您可以将数组写入(内存映射)文件,并仅将数组的一部分保留在内存中。
然而,最好的方法可能是检查你真的是否需要那么多内存。在许多情况下,使用一些聪明的算法或结构可以大大减少内存需求。使用什么取决于你最终想要达到的目标。