实例化具有最大大小的 java 数组
Instantiating java array with maximum size
我想知道如何在 Java 中实例化一个尽可能长的 long[] 数组。如果它太大,我会得到一个内存错误。我需要这个数组在不超过平台相关限制的情况下尽可能大。如何才能做到这一点?我的计算机上的限制似乎是大约 85000000 个索引,但在其他计算机上可能更少或更多。
在Java中,垃圾收集将在运行 不可预知的时间间隔内进行。因此,空闲堆内存大小将根据运行时而增加或减少。因此,您不太可能获得可用于制作长数组的确切内存字节,但您可以尝试使用运行时 class 来获取用于 JVM 的内存详细信息,如:
Runtime.getRuntime().totalMemory()
、
Runtime.getRuntime().freeMemory()
、
Runtime.getRuntime().maxMemory()
独立于问题,如何计算最大可用 space 可能是:
如果你真的只需要那个数组中的多头,你也可以考虑使用 java.nio.LongBuffer。由于您在机器附近工作,因此使用它与使用 C 数组在 C 中工作非常相似,但使用的是安全语言。
我想知道如何在 Java 中实例化一个尽可能长的 long[] 数组。如果它太大,我会得到一个内存错误。我需要这个数组在不超过平台相关限制的情况下尽可能大。如何才能做到这一点?我的计算机上的限制似乎是大约 85000000 个索引,但在其他计算机上可能更少或更多。
在Java中,垃圾收集将在运行 不可预知的时间间隔内进行。因此,空闲堆内存大小将根据运行时而增加或减少。因此,您不太可能获得可用于制作长数组的确切内存字节,但您可以尝试使用运行时 class 来获取用于 JVM 的内存详细信息,如:
Runtime.getRuntime().totalMemory()
、
Runtime.getRuntime().freeMemory()
、
Runtime.getRuntime().maxMemory()
独立于问题,如何计算最大可用 space 可能是: 如果你真的只需要那个数组中的多头,你也可以考虑使用 java.nio.LongBuffer。由于您在机器附近工作,因此使用它与使用 C 数组在 C 中工作非常相似,但使用的是安全语言。