【问题标题】:Java caps memoryJava 限制内存
【发布时间】:2019-01-04 13:53:54
【问题描述】:

当我尝试初始化一个大数组时:

double [][][] test = new double[500][500][500];

出现错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at tests.Test.main(Test.java:6)

当我给 java 提供参数时,内存太大:

-Xmx2048m

出现错误:

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

文字是黑色的。


任务管理器说

Physical Memory: 44%

在我的电脑上我有这些统计数据:

Windows 7 旗舰版

处理器:Intel(R) 'Core(TM) i5-3470 CPU @ 3.20GHz

安装内存 (RAM):8,00 GB(7,89 GB 可用)

系统类型:64位操作系统

【问题讨论】:

  • 它说它试图保留的金额是2.097152 GB,大于-Xmx2048m
  • 但应该还是可以的,不是吗?
  • 应该怎么可能?因为-Xmx2048m 不可能,所以需要分配更多空间。使用@KarolDowbecki 提出的建议
  • 我看到了问题,不,那不是我的问题

标签: java eclipse memory


【解决方案1】:

double 是 8 个字节。您的数组是 500 * 1000 * 1000 * 8,大约为 3.8 GB。

您需要分配一个更大的堆来容纳这个数组,尝试-Xmx5g 为您的应用程序的其余部分留出一些额外的内存。

【讨论】:

  • 不幸的是,这不是问题所在。我更新了我的帖子,看看它。我还测试了我的更新。
【解决方案2】:

问题的答案是安装java 64bit。我只安装了 32 位。

编辑: 感谢@greg-449 来自我之前的问题https://stackoverflow.com/questions/53807186/memory-capped-at-1-gb?noredirect=1#comment94469858_53807186,该问题未被社区接受。我的接受是你的!

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 2021-11-23
    • 2017-11-20
    • 2011-09-07
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多