使用JProfiler进行性能测试时发现如下情况:
在程式不停的运行中,query.list分配的内存不会被回收。不断创建新的instance.
是多线程运行的程序。
使用Query的方法如下:
public List find(String strhql) {
// TODO Auto-generated method stub
List result = null;
Session session = null;
Query query = null;
try {
session = this.getSession();
session.beginTransaction();
query = session.createQuery(strhql);
result = query.list();
session.getTransaction().commit();
session.flush();
session.clear();
session.close();
} catch (Exception e) {
session.getTransaction().rollback();
logger.debug("执行数据库中查询时失败,语句为:" + strhql, e);
} finally {
query = null;
this.closeSession(session);
}
return result;
}
有没有遇到过这种情况的朋友,有可行的解决方法么?