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

解决方案 »

  1.   

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

  2.   

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

  3.   

    double数组不应该是8B吗,应该是6G才对吧。
    另外,我把eclipse.ini的-Xmx参数改为了16384m,但是还是溢出,你是说我的这个参数没有起作用吗?难道非得在eclipse里面再run configuration里面再设置一次?
    多谢了!!
    16384m 是16G吧,你机器一共才16G不应该分配这么多的。很容崩溃的。
    另外eclipse分配的是给eclipse用的
    你的程序会再起一个jvm,另外分配内存。 所以你不应该配置eclipse,应该配你那个应用的run config
      

  4.   

    double数组不应该是8B吗,应该是6G才对吧。
    另外,我把eclipse.ini的-Xmx参数改为了16384m,但是还是溢出,你是说我的这个参数没有起作用吗?难道非得在eclipse里面再run configuration里面再设置一次?
    多谢了!!
    16384m 是16G吧,你机器一共才16G不应该分配这么多的。很容崩溃的。
    另外eclipse分配的是给eclipse用的
    你的程序会再起一个jvm,另外分配内存。 所以你不应该配置eclipse,应该配你那个应用的run config
    多谢回复,我在run config里面配置-Xms 1024m -Xmx 9600m,结果运行时出现could not create the Java virtual machine对话框,然后console里面输出“Invalid initial heap size: -Xms”,这是怎么回事啊,我的ini文件里面设置是-Xms 1024m -Xmx 9600m。另外,如果不在run config里面设置Xms和Xmx就不会出现上面的错误
      

  5.   

    貌似你内存不够。
    我在服务器上运行的,内存16G,我设置的xmx最高才10G啊