我直接在eclipse里面定义int [][] a = new int[10000][3000000]
运行以后就报eclipse java.lang.OutOfMemoryError: Java heap space
我在‘Run as ->Open Run Dialog...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx1000m,
我的电脑的内存是1G的,我没办法为jvm设置更高的-Xmx了这10000*300000数据是从文本里读出来的,实际上后续可能还会需要处理更大规模的数据。
有人说可以使用第三方缓存,比如oscash之类
但是我不知道怎么用,大家谁能帮帮我呢
谢谢啦。

解决方案 »

  1.   

    不能一次性加载这么大的文件,要一段一段的读, 一部分处理一部分。你机器内存即使有10个G也不行。jvm认不了那么多
      

  2.   

    分批处理吧,无论是什么样子的机器都不可能这么使用内容,风险太大至于oscache之类的东西,其实就像大于在内存中存放一个Map 以键值对的形式存取值和你这个需求没有什么关系
      

  3.   

    分段处理,这就涉及到算法了,不要什么都依赖于jvm,虽然很多时候你不需要知道具体的操作,
      

  4.   

    你内存估计找不到这么大连续空间。用list,并且启动的时候要设置参数(分配内存大小,当然,要比你的物理内存小)
      

  5.   

    如果必须用数组,最好用64位的系统,Java可用内存也在大了很多,
    否则,如果不是要把这个数组做很大改变的话,可以把它放到数据库中,由程序完成对它的操作。
      

  6.   

    要研究到一个阶段就深入下jvm。那里有你要的答案。