我正在使用Java读取大约6 GB的JSON文件。目标是将所有JSON数据导入MySQL数据库。该程序运行正常,几个初始记录,但然后抛出java.lang.OutOfMemoryError
消息 Java堆空间错误。我使用JsonParser
类来读取文件并使用nextToken()
来读取下一个JSON令牌。运行程序的系统有8 GB RAM。
如何从JSON数据集中将所有数据插入MySQL数据库?
答案 0 :(得分:1)
系统具有8 GB RAM这一事实并不一定意味着JVM可以分配该数量的内存。 JVM的总空间取决于几个因素,包括操作系统,Java配置和JVM开销。
我猜你正在读取文件,这需要JVM分配大约6 GB的内存,以便将所有字节存储到内存中。 JVM无法分配该内存量并抛出OutOfMemoryError
。
如果上述假设是正确的,那么您可能希望在读取时立即处理输入流。 Jackson和Gson可能会为您完成这项工作。
有关Java堆大小的更多信息:http://javarevisited.blogspot.nl/2011/05/java-heap-space-memory-size-jvm.html。