当我尝试读取一个巨大的列表时,我的内存不足了。这是导致服务器崩溃的代码
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/