日期:2014-05-20  浏览次数:20674 次

java out of memory heap space 错误
在写一个程序,需要用到一个四维数组,每一维的长度是2173*175*200*10,类型时double型的,现在每次运行程序的时候都在分配这个四维数组的时候出现out of memory错误,放到服务器上也一样,服务器内存16G,我把eclipse安装目录下面的eclipse.ini文件中的-Xmx设置为16384m,运行后还是这个错误,请问该怎么解决啊

------解决方案--------------------
这个应该把它送到数据库里面,程序里的内存估计不够大。
------解决方案--------------------
引用:
我们可以进行计算一下这个四维数组所占用的空间2173*175*200*10*4B=3042200000B =2901MB=3G
所以说16g的内存还是可以放下的,出现这个问题有可能你实际上没有为你的java程序分配16g的空间
不妨做以下设置试试 java -Xmx10240m -Xms10240m
然后如果是linux服务器的话,可以ps看下。
当然需要注意的是对于32位的机器,我没记错的话,可以给java进程分配的最大空间为1.6g.


靠 10240是10G 吧, 应该用64位的系统
------解决方案--------------------
引用:
Quote: 引用:

我们可以进行计算一下这个四维数组所占用的空间2173*175*200*10*4B=3042200000B =2901MB=3G
所以说16g的内存还是可以放下的,出现这个问题有可能你实际上没有为你的java程序分配16g的空间
不妨做以下设置试试 java -Xmx10240m -Xms10240m
然后如果是linux服务器的话,可以ps看下。
当然需要注意的是对于32位的机器,我没记错的话,可以给java进程分配的最大空间为1.6g.

double数组不应该是8B吗,应该是6G才对吧。
另外,我把eclipse.ini的-Xmx参数改为了16384m,但是还是溢出,你是说我的这个参数没有起作用吗?难道非得在eclipse里面再run configuration里面再设置一次?
多谢了!!

16384m 是16G吧,你机器一共才16G不应该分配这么多的。很容崩溃的。
另外eclipse分配的是给eclipse用的
你的程序会再起一个jvm,另外分配内存。 所以你不应该配置eclipse,应该配你那个应用的run config