实例化最大大小的java数组

时间:2017-07-15 02:00:35

标签: java arrays out-of-memory

我想知道如何在Java中以尽可能长的长度实例化long []数组。如果它太大,我会收到内存错误。我需要这个数组尽可能大,不要超过平台相关的限制。如何才能做到这一点?我的计算机上的限制似乎是大约85000000个索引,但在其他计算机上可能更少或更多。

2 个答案:

答案 0 :(得分:1)

在Java中,垃圾收集将在不可预测的时间间隔内运行。因此,自由堆内存大小将根据运行时增加或减少。因此,您很可能无法获得可用于生成长数组的确切内存字节,但您可以尝试使用Runtime类来获取用于JVM的内存详细信息:     Runtime.getRuntime().totalMemory()
    Runtime.getRuntime().freeMemory()
    Runtime.getRuntime().maxMemory()

答案 1 :(得分:0)

独立的问题,如何弄清楚,最大可用空间可能是多少: 如果你真的只需要那个数组中的long,你也可以考虑使用 java.nio.LongBuffer 。由于你在机器附近工作,使用它非常类似于在C语言中使用C数组但使用安全语言。