wingcat929 2008-08-26 09:11
浏览 558
已采纳

咨询一下关于ArrayList写入大量数据出现的问题

有没人遇到过把一定量的数据写到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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作