db.find后的record是否有必要及时clear

SQL = "SELECT ProjectName, BuildNo, UnitNo, RoomNo FROM HouseInfo WHERE HIID="+this.HIID;
rs = Db.use("dbCHPRS").findFirst(SQL);
if(rs!=null){
    this.HouseLocation = rs.getStr("ProjectName")+" "+rs.getStr("BuildNo")+"幢 "+rs.getStr("UnitNo")+"单元 "+rs.getStr("RoomNo")+"室";
}


今天用JF重写一个项目,中途突然冒出一个想法,在db.find后得到record,取值结束后是否有必要及时record.clear处理下?

如上代码,执行完成后,到底有没有必要再执行一下rs.clear。

此处只是findFirst,它处可能存在find出更多的record(最多的地方一次SELECT大概会有6K条记录)。

评论区

JFinal

2019-06-11 21:36

绝大多数情况下不需要,当没有引用指向对象时,java 垃圾回收会回收掉这些内存

查询数据的时候,绝大多数情况下不要一次性查出很多数据,用好 paginate 方法分页获取

当然,也有一些场景需要一次性获取很多数据。除此之外的情况在 sql 中用好 limit , 或者用 paginate 分页

DreamPeter

2019-06-11 22:43

@JFinal 之所以重写这个老应用,就是因为偶尔加载大体量的房产项目时,会导致内存吃紧。再加上部分代码不严谨,甚至有时就直接out of memory了。某些小商品城的房产项目,类似格子铺一样,一次加载都是3K-6K套房子,而且还都是必须一次性呈现。