我在Tomcat 7上運行的Java Web應用程序 - jdk1.7休眠java.lang.OutOfMemoryError:Java堆空間
該應用使用Spring 4.1.5.RELEASE和Hibernate 4.2.2.Final
我的問題是堆空間的建設部分廠房
一個OutOfMemoryException異常這是我打開一個SessionFactory
public class GenericDAO {
public static SessionFactory sessionFactory = null;
public static ServiceRegistry serviceRegistry = null;
Transaction tx = null;
public static SessionFactory createSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.getProperties()). buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
}
靜態方法,這是一個例子Ø ˚FDAO
public class SpecificDAO extends GenericDAO {
public int save(MyObject item) {
Session session = createSessionFactory().openSession();
try {
tx = session.beginTransaction();
session.save(item);
tx.commit();
return item.getId();
} catch (HibernateException e) {
if (tx != null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
return -1;
}
}
在含有
的sessionFactory = configuration.buildSessionFactory(serviceRegistry)的線路中發生的誤差;
不會立即出現在部署問題,但經過使用
2 O 3天內是我的hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:sqlserver://192.168.XX.XXX:1433;databaseName=DatabaseName</property>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
<mapping class="it.company.client.project.hibernate.MyObject"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
燦你顯示你的hibernate.cfg.xml? – Kiki
爲什麼在每次save()調用時創建SessionFactory?你可以只實例化一次並重用。 – StanislavL
我敢打賭你的程序不是很快。 – user1516873