这是JDBC驱动程序db2jcc4.jar
的问题以下是我的Lotus Notes代理程序代码,在多次运行后失败并出现“java.lang.OutOfMemoryError:Java堆空间”异常:
import lotus.domino.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
public class JavaAgent extends AgentBase {
Session s = null;
Database db = null;
ResultSet resultSet = null;
Statement st = null;
Connection db2Conn = null;
public void NotesMain() {
try {
s = getSession();
db = s.getCurrentDatabase();
Class.forName("com.ibm.db2.jcc.DB2Driver");
db2Conn = DriverManager.getConnection(
"jdbc:db2://myserver.xxxxxxxx.xxx.com:60000/MYDB",
"myuser", "mypassword");
st = db2Conn.createStatement();
String myQuery = "SELECT * FROM MY_TABLE";
resultSet = st.executeQuery(myQuery);
while (resultSet.next()) {
System.out.println(resultSet.getString("COLUMN1"));
}
} catch (SQLException sqle) {
sqle.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
st.close();
db2Conn.close();
db.recycle();
s.recycle();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
增加堆大小没有帮助。只有当我将db2jcc4.jar作为脚本库或直接作为java存档附加到代理程序时,才会出现此问题。
当我将db2jcc4.jar复制到C:\ notes \ jvm \ lib \ ext \文件夹并重新启动Notes客户端时,问题就消失了。没关系。但是要在Domino服务器上运行代理,我需要将db2jcc4.jar复制到Domino \ ext \文件夹中,我不想这样做:
所以有人遇到过这样的问题吗?在这种情况下如何正确卸载/回收类(参见上面的代码)
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:4138)
at java.util.Arrays.copyOf(Arrays.java:3870)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:119)
at lotus.domino.ClassHashtable.explodeArchive(Unknown Source)
at lotus.domino.ClassHashtable.addAttachment(Unknown Source)
at lotus.domino.AgentLoader.addAttachment(Unknown Source)