有没人遇到过把一定量的数据写到ArrayList里就会出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space异常吗?数据量大约超过5万左右吧就会出现这个问题,请问ArrayList有容量限制的吗?有什么解决办法吗?
2条回答 默认 最新
- iteye_2718 2008-08-26 14:09关注
你的问题应该不是出在ArrayList个数的大小上面,OutOfMemoryError很明显是由于对象太大倒致jvm的内存不够用,你用下面一段程序查一下jvm内存的使用情况:
Runtime lRuntime = Runtime.getRuntime();
System.out.println("Use Memory: "+(lRuntime.totalMemory()/1024/1024-lRuntime.freeMemory()/1024/1024)+"M
");
System.out.println("Free Memory: "+lRuntime.freeMemory()/1024/1024+"M
");
System.out.println("Max Memory: "+lRuntime.maxMemory()/1024/1024+"M
");
System.out.println("Total Memory: "+lRuntime.totalMemory()/1024/1024+"M
");
如果你一定要用这么大的arraylist的对像可以设置jvm内存的大小,但这是下下策 :(
我猜你用这么大的对象是做缓存处理吧,可以考虑用ehcahe做缓存处理来保存数据,ehcahe中如果数据超过限制会自动把数据Serializable到硬盘保存.这是上策 :D本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作