需要定义几个10000*300000的数组,但是总是 java.lang.OutOfMemoryError错误
需要定义几个10000*300000的数组,但是总是 java.lang.OutOfMemoryError异常我直接在eclipse里面定义int []
需要定义几个10000*300000的数组,但是总是 java.lang.OutOfMemoryError异常 我直接在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之类 但是我不知道怎么用,大家谁能帮帮我呢 谢谢啦。[解决办法] 不能一次性加载这么大的文件,要一段一段的读, 一部分处理一部分。 你机器内存即使有10个G也不行。jvm认不了那么多[解决办法] 数组超范围。你的数也太大了。 可以把数据分批次读。[解决办法] 分批处理吧,无论是什么样子的机器都不可能这么使用内容,风险太大 至于oscache之类的东西,其实就像大于在内存中存放一个Map 以键值对的形式存取值 和你这个需求没有什么关系[解决办法] 求详细需求 需要这么大的数组做什么用?
探讨 我直接在eclipse里面定义int [][] a = new int[10000][3000000] 运行以后就报eclipse java.lang.OutOfMemoryError: Java heap space 我在‘Run as ->Open Run Dialog...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx1000m, 我的电脑的内存是……[解决办法] 你还是先切分文件 分批读取吧
[解决办法] 总是研究这些不着边际的问题是没用的
做点实际的事吧
踏踏实实的
[解决办法] 非也非也
这些问题研究到一定阶段,
比整天玩某些框架要好的多
探讨 总是研究这些不着边际的问题是没用的 做点实际的事吧 踏踏实实的[解决办法] 搞这么大个数组干啥用呢。
换个思路考虑一下
[解决办法] 分段处理,这就涉及到算法了,不要什么都依赖于jvm,虽然很多时候你不需要知道具体的操作,
[解决办法] 你内存估计找不到这么大连续空间。用list,并且启动的时候要设置参数(分配内存大小,当然,要比你的物理内存小)
[解决办法] 10000*300000
想法有问题……
二维数组的空间占用要远远超过一维数组的
[解决办法] 如果必须用数组,最好用64位的系统,Java可用内存也在大了很多,
否则,如果不是要把这个数组做很大改变的话,可以把它放到数据库中,由程序完成对它的操作。
[解决办法] 要研究到一个阶段就深入下jvm。那里有你要的答案。