java - hibernate 内存泄漏

标签 java hibernate

我重复调用此代码片段,并且每次调用它时内存需求都会不断增长。

如何在每次调用时释放内存?

        final Session session = Hibernate.getSessionFactory().openSession();
        try {
            Transaction tx = session.getTransaction();
            tx.begin();
            final ProjectionList projList = Projections.projectionList();
            projList.add(Projections.count("totalLinePrice"));
            projList.add(Projections.sum("totalLinePrice"));
            final Object[] sum = (Object[]) session
                    .createCriteria(OrderR.class)
                    .setProjection(projList)
                    .add(Restrictions.eq("shopId", getShopR().getId()))
                    .add(Restrictions.gt("dtime", ord.monthBackTime))
                    .uniqueResult();
            ord.num = (int) sum[0];
            ord.revenueTotal = (long) sum[1];
            tx.commit();
        } catch (HibernateException e) {
            throw new Bug(e);
        } finally {
            session.flush();
            session.clear();
            session.close();
        }

最佳答案

如果您正在使用 Eclipse,使用“Eclipse Memory Analyzer”可以帮助提供 java 堆使用的详细信息。希望 Hibernate.getSessionFactory() 遵守单例模式,因为 hibernate sessionFactory 的内部状态是不可变的。

如果有帮助请告诉我!!

关于java - hibernate 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066958/

相关文章:

java - 纬度和经度为空

javascript - 正则表达式不适用于 jsp java 中的数字

java - JDBC 复制驱动程序总是在没有 Activity 缓存的情况下返回相同的数据

mysql - GORM tablePerHierarchy false,外键

hibernate - 如何检查 isDirty ('transient_fieldName' ) 在 Grails 中的 transient 字段

java - 持久性——实体类 vs Hibernate 框架 vs 其他

java - 将对象分配给字符串

java - Gson:将 MySQL 日期时间反序列化为 Java 对象

java - 从需要 SSL 证书的 WSDL 创建 Web 服务客户端

mysql - 为多对多关系创建 HQL 查询