下面的代码会出来内存溢出。但是这个是书上面的代码。问题出现在哪。二级缓存已经关闭了
private void testUser()throws Exception
{
//打开Session
Session session = HibernateUtil.currentSession();
//开始事务
Transaction tx = session.beginTransaction();
//循环100000次,插入100000条记录
for (int i = 0 ; i < 100000 ; i++ )
{
//创建User实例
UserInsert u1 = new UserInsert();
u1.setName("xxxxx" + i);
u1.setAge(i);
u1.setNationality("china");
//在Session级别缓存User实例
session.save(u1);
//每当累加器是20的倍数时,将Session中数据刷入数据库,
//并清空Session缓存。
if (i % 20 == 0)
{
session.flush();
session.clear();
}
}
//提交事务
tx.commit();
//关闭事务
HibernateUtil.closeSession();
}
private void testUser()throws Exception
{
//打开Session
Session session = HibernateUtil.currentSession();
//开始事务
Transaction tx = session.beginTransaction();
//循环100000次,插入100000条记录
for (int i = 0 ; i < 100000 ; i++ )
{
//创建User实例
UserInsert u1 = new UserInsert();
u1.setName("xxxxx" + i);
u1.setAge(i);
u1.setNationality("china");
//在Session级别缓存User实例
session.save(u1);
//每当累加器是20的倍数时,将Session中数据刷入数据库,
//并清空Session缓存。
if (i % 20 == 0)
{
session.flush();
session.clear();
}
}
//提交事务
tx.commit();
//关闭事务
HibernateUtil.closeSession();
}
解决方案 »
- url参数传递 个别中文字乱码
- 老师说我的代码有问题,请各位指教
- 关于存储过程的问题
- java 右下角信息提示问题。。请大侠们进来看看。
- EJB和web项目不在一起,怎么在Servlet里import EJB的Remote接口啊
- hibernate Criteria nullException 问题!(在线加分)
- 动态拔号获得IP地址,如果实现Tomcat和WebLogic在Internet上可访问
- spring中如何设计全局对象?或者说static方法中如何访问DAO?
- 菜鸟类问题。高分求解 在线等待。。。。。。
- JBOSS不能在JSDK的1.5.0下来使用吗?
- 求救啊 !!! 连接远程数据库问题。(Oracle)
- 接项目~~
at com.microsoft.sqlserver.jdbc.TDSPacket.<init>(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(Unknown Source)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at lee.UserInsertManager.testUser(UserInsertManager.java:46)
at lee.UserInsertManager.main(UserInsertManager.java:27)
肯定溢出了...
//创建User实例
UserInsert u1 = new UserInsert(); 把这个对象复用可以巴?
你把UserInsert u1 = new UserInsert();这句 挪到循环外面试试
实在不行 就用存储过程插入吧