使用Hibernate的Tomcat 5.5 OutOfMemory错误

使用Hibernate的Tomcat 5.5 OutOfMemory错误,hibernate,tomcat,tomcat5.5,Hibernate,Tomcat,Tomcat5.5,我遇到来自Tomcat的OutOfMemory错误。自从我将Hibernate添加到应用程序后,这个错误就开始了。 我没有使用Spring,所以我为Hibernate会话执行所有打开/关闭操作 下面是我正在使用的几个Hibernate配置。我用Java代码创建SessionFactory hibernate.current_session_context_class=thread hibernate.connection.jndi.datasource=jdbc/dataSource 我创建了

我遇到来自Tomcat的OutOfMemory错误。自从我将Hibernate添加到应用程序后,这个错误就开始了。 我没有使用Spring,所以我为Hibernate会话执行所有打开/关闭操作

下面是我正在使用的几个Hibernate配置。我用Java代码创建SessionFactory

hibernate.current_session_context_class=thread
hibernate.connection.jndi.datasource=jdbc/dataSource
我创建了自己的HibernateUtil类来检索/保存数据。要初始化它,我只需调用MyHibernateUtil.initialize()并创建SessionFactory

这是带有一个Servlet的基本应用程序。在添加Hibernate之前,这不是一个问题。我还在下面使用MyHibernateUtil.closeSession()关闭会话

有人使用Tomcat和Hibernate面临Tomcat OutOfMemory问题吗

public class MyHibernateUtil{
  public static SessionFactory factory = null;
  public static AnnotationConfiguration aConfigure = new AnnotationConfiguration();

  private static AnnotationConfiguration configure(){
    //Add my annotated classes here
    ...
   return aConfigure;
  }
  public static initialize(){
    Configuration configure = MyHibernateUtil.configure();
    //I add my Hibernate configuration stuff here.
    factory = configure.buildSessionFactory();

  }

  public static Session getSession(){ 
      Session hibernateSession = factory.getCurrentSession();
      return hibernateSession; 
  }

  public static void closeSession(){
      MyHibernateUtil.getSession().close();
  }

  public static Session beginTransaction() {
      Session hibernateSession;
      hibernateSession = MyHibernateUtil.getSession();
      hibernateSession.beginTransaction();
      return hibernateSession;
  }

  public static void commitTransaction() {
      MyHibernateUtil.getSession().getTransaction().commit();
  }

}

嗯,也许你的记忆不足以装载所有东西。在catalina.sh中,通过将
-Xmx256m
-XX:MaxPermSize=128m
添加到
catalina\u OPTS
变量来增加它。(我的号码是任意选择的)。(您也可以使用
-Xms
设置初始值)

您甚至不需要手动
关闭会话,因为您使用的是
getCurrentSession
,它将在事务结束时关闭(提交或回滚)。但在我仅使用org.hibernate.Criteria进行简单选择的情况下,会说。。。“criteria.list();”这将只刷新会话而不提交,对吗?在这种情况下,我还需要手动关闭会话吗?