67,549
社区成员




public void batchUpdate(){
//循环遍历所有INFOMATION_ARTICLE
Article article = new Article();
List<Article> batchList= new ArrayList<Article>();
String content=null;
List<Article> list= new ArrayList<Article>();
for(int i=0;i<700;i++){
article.setStartRow(i*1000);
article.setEndRow((i+1)*1000);
list = commonDao.queryForList("Article.getArticlePage", article);
for (Article art : list) {
content = art.getArticleContent();
int cou = 1;
List<Word> artWords = getWords(art.getId());
for (Word word : artWords) {
if (cou++ > 10) {
break;
}
try {
content=content.replace(word.getUrl(), word.getWordName());//去掉标签
content=content.replaceFirst(word.getWordName(), word.getUrl());//替换第一个
} catch (Exception e) {
}
}
Article a = new Article();
a.setId(art.getId());
a.setArticleContent(content);
batchList.add(a);
}
commonDao.batchUpdate("Article.update", batchList);
batchList.clear();
System.out.println(i);
}
2013-7-2 11:21:21 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet SpringMVC threw exception
java.lang.OutOfMemoryError: Java heap space
at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2764)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9348)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:211)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at $java.sql.PreparedStatement$$EnhancerByProxool$$13fa0d1f.executeBatch(<generated>)
at com.ibatis.sqlmap.engine.execution.SqlExecutor$Batch.executeBatch(SqlExecutor.java:611)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeBatch(SqlExecutor.java:118)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.executeBatch(SqlMapExecutorDelegate.java:759)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.executeBatch(SqlMapSessionImpl.java:184)
at com.founder.ec.base.dao.impl.BaseDaoImpl$2.doInSqlMapClient(BaseDaoImpl.java:234)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
at com.founder.ec.base.dao.impl.BaseDaoImpl.batchUpdate(BaseDaoImpl.java:228)
at com.founder.ec.seo.service.impl.WordServiceImpl.batchUpdate(WordServiceImpl.java:550)
at com.founder.ec.seo.service.impl.WordServiceImpl$$FastClassByCGLIB$$30ed5a4b.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
at com.founder.ec.common.aop.MethodAOP.doLog(MethodAOP.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspect
List<Word> artWords = getWords(art.getId());
这句把List<Word> artWords 放到for循环外面吧,不然每循环一次,相当于多new一个对象