将大型JSON文件中的数据插入MySQL数据库时出现OutOfMemoryError

时间:2015-09-21 20:21:12

标签: java mysql json

我正在使用Java读取大约6 GB的JSON文件。目标是将所有JSON数据导入MySQL数据库。该程序运行正常,几个初始记录,但然后抛出java.lang.OutOfMemoryError消息 Java堆空间错误。我使用JsonParser类来读取文件并使用nextToken()来读取下一个JSON令牌。运行程序的系统有8 GB RAM。

如何从JSON数据集中将所有数据插入MySQL数据库?

1 个答案:

答案 0 :(得分:1)

系统具有8 GB RAM这一事实并不一定意味着JVM可以分配该数量的内存。 JVM的总空间取决于几个因素,包括操作系统,Java配置和JVM开销。

我猜你正在读取文件,这需要JVM分配大约6 GB的内存,以便将所有字节存储到内存中。 JVM无法分配该内存量并抛出OutOfMemoryError

如果上述假设是正确的,那么您可能希望在读取时立即处理输入流。 JacksonGson可能会为您完成这项工作。

有关Java堆大小的更多信息:http://javarevisited.blogspot.nl/2011/05/java-heap-space-memory-size-jvm.html