如何从mysql数据库中添加超过50,000,000条arraylist记录

时间:2014-01-16 11:05:15

标签: java out-of-memory

从数据库中添加超过50,000,000条记录的数组列表。我在堆内存错误中添加了30,000,000条记录。

5 个答案:

答案 0 :(得分:2)

看看这里:Increase heap size in Java

您可以在JVM上设置标志以增加堆大小。使用你想要的任何东西,但要确保你有明显的RAM。

从命令行:

java -Xmx8g myprogram
java -Xmx16g myprogram

或者,如果您知道程序需要多少空间,请设置初始堆大小:

java -Xms4g myprogram

谨慎使用这些。正如其他人所评论的那样,这种方法更可能是Java堆的默认限制。

答案 1 :(得分:1)

使用分块,因为它会提高性能并解决堆内存错误。我的意思是使用100个50000大小的总数,总计将是5000000.

答案 2 :(得分:1)

另一个考虑因素是查看50000000条记录,看看它们是否可以逻辑分组为较小的组。然后,自己处理每个组,这样就不会耗尽内存。示例:电话簿中的所有名称都可以按姓氏的第一个字母分组。因此,所有姓氏以'A'开头的人都被组合在一起并首先处理,然后转到以'B'开头的姓氏。我认为这比一次处理一组10,000条记录更好的方法。

如果您决定将数据放入数据库,则应仔细设计数据库模式,而不是仅创建一个数据库表来保存所有50,000,000条记录。

答案 3 :(得分:0)

Ron指出,增加堆大小是一种选择。通常,当需要处理大量记录时,最佳做法是确定一种顺序处理它们的方法,以便只需要一条记录加上任何摘要数据,同时必须在内存中。另外,如果我需要查找表中列的最大值或平均值,我可以使用查询等。

答案 4 :(得分:0)

您不应该存储ArrayList这么多数据。出于数据库发明的原因。

如果您想获取特定数据,您应该执行查询,然后将结果存储为对象,如果您不再需要,请将这些对象放入List

如果您需要聚合数据,您还可以为数据创建一个Wrapper对象。