java.lang.OutOfMemoryError:请求的阵列大小超过了 Amazon Cloud 中 eclipse



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

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

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

当我尝试在 Amazon 实例的 eclipse 中使用 java 运行更大的文件(如 700 MB 以上的文件(时,我遇到了上述异常,RAM 大小为 32 GB....

直到运行 570 MB 文件我才遇到异常,运行 600 MB 文件后触发异常。

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

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

我将最大大小设置为12 GB..但我仍然得到这个例外

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

任何人都可以提出解决此问题的更好解决方案吗?

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

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

相关内容

最新更新