小编kun*_*xit的帖子

JOOQ 从大表中获取数据:良好实践

我有一个外部 api,一个用于下载,另一个用于从 db 表 [postgresql] 上传数据。桌子相当大。随着时间的推移,我们观察到缓慢的服务器继续占用内存但并没有删除太多,并且它抛出错误并退出 [有时 linux 关闭它]。我检查了内存转储,但无法找出与我的代码相关的任何内容。我不使用任何本地缓存或类似的东西。但今天我得到了这个——

java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.sql.Timestamp.toString(Timestamp.java:350)
        at java.lang.String.valueOf(String.java:2994)
        at org.jooq.impl.AbstractParam.name(AbstractParam.java:107)
        at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:81)
        at org.jooq.impl.AbstractParam.<init>(AbstractParam.java:77)
        at org.jooq.impl.Val.<init>(Val.java:63)
        at org.jooq.impl.DSL.val(DSL.java:15157)
        at org.jooq.impl.Tools.field(Tools.java:1092)
        at org.jooq.impl.Tools.fields(Tools.java:1226)
        at org.jooq.impl.BatchSingle.executePrepared(BatchSingle.java:231)
        at org.jooq.impl.BatchSingle.execute(BatchSingle.java:182)
        at org.jooq.impl.BatchCRUD.executePrepared(BatchCRUD.java:159)
        at org.jooq.impl.BatchCRUD.execute(BatchCRUD.java:100)
Run Code Online (Sandbox Code Playgroud)

对于获取,我使用普通fetch函数,将数据转储到数据库中,我使用 JOOQbatchInsertbatchUpdate方法。JOOQ 是否有任何好的做法来处理大量数据?我错过了什么吗?

java postgresql garbage-collection out-of-memory jooq

4
推荐指数
1
解决办法
2060
查看次数