【问题标题】:how to add millions object to arraylist in java without having out of memory errorjava - 如何在java中将数百万个对象添加到arraylist而不会出现内存不足错误
【发布时间】:2015-09-07 01:24:30
【问题描述】:

我想将 5000000 个元素添加到 ArrayList 并将 ArrayList 写入文件,但我遇到了 OutOfMemoryException。我使用 for 循环将对象添加到 ArrayList

【问题讨论】:

  • 记录从何而来?
  • 您能描述一下您的记录吗?您也是在生产应用程序中这样做的吗?
  • 你不能将记录分块写入文件,而不是将它们全部加载到列表中,然后从列表中写入数据吗?
  • 如果您向 ArrayList 添加 5M 条记录,您的设计就有缺陷。你想做什么,因为这可能是XY Problem

标签: java


【解决方案1】:

如果您可以控制创建ArrayList,请使用将初始容量作为参数的构造函数。这样您也可以防止不必要的复制操作。

// This alone takes about 20 MB of RAM with 4 byte addresses
List<Object> l = new ArrayList<>(5000000); 

如果这没有帮助,请不要缓冲所有对象,将它们直接写入文件。

【讨论】:

  • 我也尝试这样做,但根本没有帮助。
  • 嗯,您是否尝试将对象直接写入文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 2013-03-25
  • 2013-11-06
  • 2011-12-18
  • 2023-04-06
  • 1970-01-01
  • 2013-10-29
相关资源
最近更新 更多