我的应用程序一直运行良好。我们的运营团队提供了一个upadte,我看到Oracle JDBC驱动程序(11.2.0.3)已更新,JDK已更新为1.6.30。
我一直在阅读所有博客,并检查过任何未关闭的错过的连接,但这些都没有解决我的问题。 我发现一旦处理完成,一旦运行方法分配的内存就不会被释放。
我已将finally块添加到我查询的所有方法
} finally {
try {
if (results != null) {
results.close();
results = null;
}
} catch (Exception e) { resources.logException(this.getClass().getName(), e);}
try{
if (statement != null) {
statement.close();
statement = null;
}
} catch (Exception e) { resources.logException(this.getClass().getName(), e); }
try{
if (connection != null) {
resources.free(connection);
connection.close();
connection=null;
}
} catch (Exception e) { resources.logException(this.getClass().getName(), e); }
}
我的应用程序运行几个小时,然后抛出OutofMemory - Java堆大小。 我还运行了核心转储和堆转储 - 我分析了HPROF文件 - 我认为这是一个可疑的
" oracle.jdbc.driver.T4CConnection"的5,832个实例,由" sun.misc.Launcher $ AppClassLoader @ 0x96fe0a10"加载占用348,070,864(67.53%)个字节。这些实例是从" java.util.WeakHashMap $ Entry []"的一个实例引用的,由""
加载如果我遗失了什么,请告诉我。
我还将-XMX更改为1024,但仍然没有更改(设置为256)