有没人遇到过把一定量的数据写到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本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报