我在回收Notes对象方面相当严格,但是遇到了无法回收该对象的情况,因为该对象已从方法传递回调用代码。所以在课堂上我有这段代码:
public Database getAppDB() {
Database appDB = null;
try{
Session s = ExtLibUtil.getCurrentSession();
serverName = s.createName(s.getCurrentDatabase().getServer()).getCommon();
appDB = s.getDbDirectory(serverName).openDatabaseByReplicaID(this.getAppRepID());
return appDB;
}catch (NotesException e){
System.out.println(e.toString());
return appDB;
}finally{
Utils.recycleObjects(s);
}
}
这将打开一个数据库,然后将appDB返回给调用程序。显然,如果我在调用程序中实例化数据库,我将需要回收它,但是在这种类方法中,我无法回收它,因为它已被传回。我要用它制作一个滴答定时炸弹吗?如果是这样,是否有解决此问题的方法?在会话的整个生命周期中,可以将这种方法称为数百次。
最佳答案
简单地说:调用您的方法的代码负责回收数据库对象。
此规则也适用于SSJS代码!
您也不能回收该会话,因为它回收了所有从其派生的对象。
关于java - 发行object.recycle,以及何时进行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24783697/