gpt4 book ai didi

使用 JPA 循环遍历大表时出现 java.lang.OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-04 05:11:41 24 4
gpt4 key购买 nike

List<Picture> pictures = Picture.findAll(); //Around 2GB of data (uses JPA/play framework)

for (Picture picture : pictures) {
byte[] b = picture.image.data; //Image raw data is stored in a different table than Picture table
System.out.println(picture.file_name + " " + b.length);
}

上面的代码导致 java.lang.OutOfMemoryError运行时,由于图片存储在数据库中而不是数据库中的文件引用。

无论如何,一旦对象完成处理,我是否可以“刷新”内存?
我试过 picture.em().flush() , 和 Iterator.remove(), System.gc() ,没有工作。
请帮忙。

最佳答案

似乎我找到了解决方案。每张图片后清除实体管理器。

List<Picture> pictures = Picture.findAll();
for(int i=0;i<pictures.size();i++) {
Picture picture = Picture.findById(pictures.get(i).id);
byte[] b = picture.image.data;
System.out.println(picture.file_name + " " + b.length);
//Do extra stuff with image data

picture.em().clear(); //clear JPA entity manager
}

关于使用 JPA 循环遍历大表时出现 java.lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com