【发布时间】:2014-06-29 17:00:15
【问题描述】:
如果我查询一个大表,那么我得到一个 java.lang.OutOfMemoryError。 Profiler 说 com.mysql.jdbc.Buffer 变大了。
可以在 ormlite 中设置 fetchsize 吗?我已经使用了迭代器,所以它应该比 findall 消耗更少的内存。我还尝试了不同类型的结果集作为迭代器参数。
在查询中设置更高的堆大小或使用限制/偏移量不应成为解决方案。
【问题讨论】:
如果我查询一个大表,那么我得到一个 java.lang.OutOfMemoryError。 Profiler 说 com.mysql.jdbc.Buffer 变大了。
可以在 ormlite 中设置 fetchsize 吗?我已经使用了迭代器,所以它应该比 findall 消耗更少的内存。我还尝试了不同类型的结果集作为迭代器参数。
在查询中设置更高的堆大小或使用限制/偏移量不应成为解决方案。
【问题讨论】:
可以在 ormlite 中设置 fetchsize 吗?我已经使用了迭代器,所以它应该比 findall 消耗更少的内存。我还尝试了不同类型的结果集作为迭代器参数。
我认为这不是 fetchsize 问题。默认值不应导致内存问题。如果您使用的是迭代器,那么您应该很好。您是否将所有实体都保存在内存中?您可以在阅读它们时对其进行处理,而不是将它们全部保存在内存中吗?
【讨论】: