【发布时间】:2020-02-21 19:07:04
【问题描述】:
我有一个 Java 代理。 当我运行代理时,我还创建了一个正在打开数据库的对象。 这是数据库类的代码:
public class Databases {
Database OrdersDB;
Database CustomersDB;
Database ItemsDB;
Database TablesDB;
Database ItemsDB;
public Databases() throws NotesException{
}
public boolean openAllDatabases(Session session){
try {
OrdersDB = session.getDatabase(getServerName(session,"ORDER"),globalSettings.OrderDB, false);
CustomersDB= session.getDatabase(getServerName(session,"CUSTOMER"),globalSettings.CustomerDB, false);
TablesDB= session.getDatabase(getServerName(session,"TABLES"),globalSettings.TablesDB, false);
ItemsDB = session.getDatabase(getServerName(session,"ITEMS"),globalSettings.ItemsDB, false);
return true;
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Database not opened!");
return false;
}
}
在整个代理中,我都使用这个数据库 obj。同样在我的代理中,我创建了另一个类,在其中我将此数据库 obj 作为参数传递,并在那里使用数据库。 最后,当我的代理完成后,我回收所有数据库并将数据库 Obj 设置为 null。
我想知道这是否是一个好习惯? 我已经尝试在需要时打开和关闭数据库,但是由于代码太大,如果我错误地回收了另一个类中的数据库,我会得到空指针异常。 这就是为什么我在代理开始时保持打开数据库并在结束时回收它们的原因。 但我不知道这是否会导致内存泄漏。
【问题讨论】:
标签: java lotus-domino