0

我遇到了来自 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();
  }

}
4

1 回答 1

1

好吧,也许您的内存不足以加载所有内容。在 catalina.sh 中通过添加-Xmx256m和变量-XX:MaxPermSize=128m来增加它。CATALINA_OPTS(我的号码是任意选择的)。(您也可以使用 设置初始值-Xms

于 2010-10-27T17:44:32.937 回答