zzhengdong 2011-09-27 19:36
浏览 500
已采纳

Hibernate: org.hibernate.query.list内存消耗过大的问题?

使用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;   

    }  

 

有没有遇到过这种情况的朋友,有可行的解决方法么?

 

 

 

  • 写回答

8条回答 默认 最新

  • xiaoyingSUN 2011-09-29 16:25
    关注

    木有2级缓存我觉得可能就变2个了
    检查下你[color=red]HibernateSessionFactory[/color]的构造方法,如果每次都是config之后new一个,那你就用完直接把sessionFactory也关了
    然后看下你Impl包里面的THDservice,是不是有什么方法没有if做判断
    一直叫getParam()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题