0

使用:-Xms1000M -Xmx4000M -mx1000m 我仍然得到 java.lang.OutOfMemoryError: Java heap space

我正在使用 jai-imageio 库读取 100Mb JPEG2000 文件,一旦被 imageio 库解压缩,它可能需要超过 1Gb 的堆空间。我使用的是 32 位 windows JVM,所以我不能创建超过 1G 的堆空间。

看到这篇文章:java-OutOfMemoryError 和 -Xms1000M -Xmx4000M -mx1000m

那么,有没有办法告诉 JVM 使用文件作为堆内存,而不是 ram 内存(即使在 32 位窗口中,堆空间也可以大于 1Gb)?

4

1 回答 1

4

这是操作系统的限制(以及地址中的位数)。您需要使用 64 位操作系统和 64 位 JVM。

当您添加到交换空间时,您允许 JVM 将此文件用作交换空间。注意:这样做会使您的性能降低 10 倍或更多。

您应该能够在 32 位 Windows 上获得 1.2 GB 到 1.5 GB 的堆。

一个类似的问题被问到here。我可以为 4GB 和 8GB Ram 提及多少 -XX:MaxPermSize 大小并为此计算?

于 2012-04-22T09:57:58.740 回答