java-OutOfMemoryError与-Xms1000M-Xmx4000M-mx1000m

java-OutOfMemoryError与-Xms1000M-Xmx4000M-mx1000m,java,Java,使用:-Xms1000M-Xmx4000M-mx1000m 我仍然得到一个java.lang.OutOfMemoryError:java堆空间 如果我尝试增加这些数字中的任何一个,我会得到以下JVM错误: 初始化VM时出错 无法为对象堆保留足够的空间 无法创建Java虚拟机 如何解决这个OutOfMemoryError问题? (即使我需要在磁盘上缓存内存)您的系统有多少内存?你在运行windows吗?使用32位windows JVM不能创建超过1G的堆。如果Xms设置大于此限制,JVM将无法初始

使用:-Xms1000M-Xmx4000M-mx1000m 我仍然得到一个java.lang.OutOfMemoryError:java堆空间

如果我尝试增加这些数字中的任何一个,我会得到以下JVM错误:

初始化VM时出错

无法为对象堆保留足够的空间

无法创建Java虚拟机

如何解决这个OutOfMemoryError问题?
(即使我需要在磁盘上缓存内存)

您的系统有多少内存?你在运行windows吗?使用32位windows JVM不能创建超过1G的堆。如果Xms设置大于此限制,JVM将无法初始化

压缩JPEG图像。100M JPEG相当大,一旦通过图像io库解压,它会大得多。1G堆的OOM是可以想象的


巴里

您的系统有多少内存?你在运行windows吗?使用32位windows JVM不能创建超过1G的堆。如果Xms设置大于此限制,JVM将无法初始化

压缩JPEG图像。100M JPEG相当大,一旦通过图像io库解压,它会大得多。1G堆的OOM是可以想象的


Barry

您是如何导致OoM错误的?您可能在某处发生内存泄漏。请使用探查器确定。我只是使用jai imageio库读取100Mb JPEG2000文件。您是如何导致OoM错误的?您可能在某处发生内存泄漏。使用探查器来确定。我只是使用jai imageio库来读取100Mb JPEG2000文件。是的,它是32位windows;有没有办法告诉JVM使用文件作为堆内存,而不是ram内存(以便能够增加堆空间,即使在32位窗口中也是如此)?您可以交换空间,但32位系统上的堆大小限制在1.2到1.5 GB左右。理论上,在32位系统上最多可以访问4 GB(即2^32),Windows的限制为3.5 GB。可以获得的连续内存限制了堆的大小。顺便说一句:如果你超过了你的物理内存,你的程序会慢10倍或更多;有没有办法告诉JVM使用文件作为堆内存,而不是ram内存(以便能够增加堆空间,即使在32位窗口中也是如此)?您可以交换空间,但32位系统上的堆大小限制在1.2到1.5 GB左右。理论上,在32位系统上最多可以访问4 GB(即2^32),Windows的限制为3.5 GB。可以获得的连续内存限制了堆的大小。顺便说一句:如果你超过了你的物理内存,你的程序会慢10倍或更多。