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

标签 java mysql json

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

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

最佳答案

系统具有 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 .

关于java - 将大型 JSON 文件中的数据插入 MySQL 数据库时出现 OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703909/

相关文章:

java - Tomcat 7.0.47 - Windows - 缺少未处理的异常/堆栈跟踪

java - 如何通过javamail访问gmail帐户

php - 用户对 MySQL 数据库的访问被拒绝

php - 如何将表单数据添加到 JSON 文件?

java - org.json.JSONObject.getLong 给出不精确的结果

java - 循环,初学者

java - 为什么我在 Eclipse 中收到这些错误?

php - 使用 DNS 工具的 cpanel 免费替代方案

mysql - 帮忙写个query : Confusion over order of operations of GROUP BY and ORDER BY

javascript - 我的 AJAX post 变量无法访问我的 PHP