【问题标题】:how to declare 10^9 size array in java如何在java中声明10^9大小的数组
【发布时间】:2017-02-26 08:26:20
【问题描述】:

显示以下错误:

“线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间”

当我声明时:

long[] ar = new long[1000000000];

那么如何声明一个大小为 10^9 的数组呢?

【问题讨论】:

  • 我认为答案是,不要尝试声明一个大得离谱的数组,它需要的内存超出可用内存。无论您认为自己需要什么,都可能找到另一种方法。
  • 这听起来像X Y problem。您可能应该edit 这个问题并解释您要解决的实际问题是什么。
  • 创建这种大小的数组的目的是什么,尤其是长数组。这只会让一切变得更糟。

标签: java arrays


【解决方案1】:

要创建一个包含 10 亿个 8 字节 long 值的数组,您需要在老一代中至少有 8 GB 的可用内存。我建议给堆至少 12 GB,如果你有足够的内存,从 32 GB 开始。

如果您没有这么多内存,您可以在 Linux 上使用内存映射文件,但很可能有一种内存效率更高的方式来存储数据(取决于您尝试这样做的原因)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 2012-08-13
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多