我在回收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/

10-12 18:36