java.lang.OutOfMemoryError:在Amazon Cloud中,请求的数组大小超过了eclipse中的VM限制

时间:2018-03-08 15:07:10

标签: java eclipse amazon-web-services java-8 heap-size

我想在亚马逊云中使用java对大文件进行性能测试。

任务是将一种文件格式转换为另一种文件格式并编写输出文件

java.lang.OutOfMemoryError: Requested array size exceeds VM limit in eclipse

当我尝试在亚马逊实例的eclipse中使用java运行大型700 MB文件时,我遇到了上述异常,其中RAM大小为32 GB ....

在运行570 MB文件之前我没有例外,运行600 MB文件后触发了异常。

一些谷歌搜索告诉解决方案增加VM的堆大小,我也尝试过, 我的堆大小设置为

-Xms4G -Xmx12G -XX:-UseGCOverheadLimit -XX:+UseG1GC

我将最大尺寸设置为12 GB ..但我仍然得到这个

的例外
java.lang.OutOfMemoryError: Requested array size exceeds VM limit

有人可以提出更好的解决方案来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这似乎不是堆大小的问题,但您只是尝试分配索引大于2 ^ 31-1(Integer.MAX_VALUE)的数组。你能尝试使用除阵列之外的其他结构吗?或者也许尝试对文件进行分区?

另一种选择是使用-XX:+ UseCompressedOops,如果您的堆大小小于32 GB并且您使用的是64位jvm。它会将指针的大小从64位减少到32位。