【问题标题】:OrmLite with BigData - java.lang.OutOfMemoryErrorOrmLite 与 BigData - java.lang.OutOfMemoryError
【发布时间】:2014-06-29 17:00:15
【问题描述】:

如果我查询一个大表,那么我得到一个 java.lang.OutOfMemoryError。 Profiler 说 com.mysql.jdbc.Buffer 变大了。

可以在 ormlite 中设置 fetchsize 吗?我已经使用了迭代器,所以它应该比 findall 消耗更少的内存。我还尝试了不同类型的结果集作为迭代器参数。

在查询中设置更高的堆大小或使用限制/偏移量不应成为解决方案。

【问题讨论】:

    标签: java mysql ormlite


    【解决方案1】:

    可以在 ormlite 中设置 fetchsize 吗?我已经使用了迭代器,所以它应该比 findall 消耗更少的内存。我还尝试了不同类型的结果集作为迭代器参数。

    我认为这不是 fetchsize 问题。默认值不应导致内存问题。如果您使用的是迭代器,那么您应该很好。您是否将所有实体都保存在内存中?您可以在阅读它们时对其进行处理,而不是将它们全部保存在内存中吗?

    【讨论】:

    • java.lang.OutOfMemoryError 直接出现在 dao 的 iterator() 调用之后。内存消耗在我的代码之外。我改变了最大堆大小,没关系。尽管如此,这不应该是解决方案。
    • sry,不是在 iterator() 之后 -> inside...callstack 在 mysql 相关代码中的某处结束。
    猜你喜欢
    • 2012-10-25
    • 2017-04-22
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    相关资源
    最近更新 更多