Java 机器因 MySQL 结果太大而崩溃。

标签 java mysql networking

当我尝试读取一个巨大的列表时,我的内存不足了。这是导致服​​务器崩溃的代码

query = "SELECT * FROM huge_list ORDER BY id ASC";
statement = this.database.createStatement();
results = statement.executeQuery(query);

这是错误

线程“Thread-2”中出现异常 java.lang.OutOfMemoryError:Java 堆空间

错误指向结果行。关于如何避免这种情况有什么建议吗?也许使用 Limit 加载列表?列表的大小会导致错误吗?

最佳答案

您可以更改 jvm 的内存设置,这可以解决您的问题,但一般来说您不应该立即加载所有数据。更好的加载总是假设 100 行并查询接下来的 100 行。

为了安全起见,我会存储最小的 ID 并再次查询,并限制下一个分支的行。因此,如果添加新行,这不会破坏您的逻辑。

关于Java 机器因 MySQL 结果太大而崩溃。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453228/

相关文章:

链接到批处理文件的java变量

mysql - 通过查询自定义订单

php - UTF8 字符串上的 == 安全吗?

mysql - SQL获取所有连接元素,通过连接表指定连接实体

c - gcc 编译器不报告 inet_ntoa 错误

java - Java中如何将图像置于前台?

java - 如何将 Web 服务连接到 Android 应用程序

Javafx:如何将组合框字符串转换为 double

c - UDP 网络实现的 C 中 send() 和 sendTo() 之间的区别

C# 网络 : Socket won't respond to external ip