使用Hibernate时Tomcat 5.5 OutOfMemory错误

时间:2010-10-27 13:45:55

标签: hibernate tomcat tomcat5.5

我遇到Tomcat的OutOfMemory错误。自从我将Hibernate添加到应用程序中以来,这个错误就开始了。 我没有使用Spring,所以我为Hibernate Sessions做了所有开放/关闭。

以下是我正在使用的一些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();
  }

}

1 个答案:

答案 0 :(得分:1)

好吧,也许你的记忆力不足以加载一切。通过将-Xmx256m-XX:MaxPermSize=128m添加到CATALINA_OPTS变量,在catalina.sh中增加它。 (我的数字是任意选择的)。 (您还可以使用-Xms

设置初始值