解决方案 »

  1.   

    楼主是不是在线程池里用ibatis之类的了?
      

  2.   

    我觉得你主要得看下几个linked list里面怎么回事。
      

  3.   

    To skgary:业务就是读取CSV文件大量数据,最终走Mybatis向数据库批量插入数据。观察任务管理器内存只增不减,而用Jprofile观察各个Class类对象内存变化并不是一直递增,还请教这种现象,利用Jprofile该如何操作才能定位问题所在之处?谢谢。
      

  4.   


    实在不好意思 , jprofile 不太懂。我意思是,你想办法把几个list里面的内容点开来看看,看看这些东西是不是仍然在用,是不是和你占的内存有关系。
      

  5.   

     [ohms] 2014-08-27 14:22:46 [com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](189)-[INFO] 同时读取多个性能指标文件进行操作,已扫描CSV文件记录2000行.
     [ohms] 2014-08-27 14:33:32 [com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](261)-[INFO] [LU]CSV文件第2889行列标题.
     [ohms] 2014-08-27 14:35:12 [com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV](189)-[INFO] 同时读取多个性能指标文件进行操作,已扫描CSV文件记录3000行.
     [ohms] 2014-08-27 14:42:33 [com.iswoo.ohms.orm.GenericDAOImpl.insert](58)-[ERROR] excute com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch to insert data exception, condition[128个实体对象]
     org.mybatis.spring.MyBatisSystemException: SqlSession operation; nested exception is java.lang.OutOfMemoryError: Java heap space
    at org.mybatis.spring.SqlSessionTemplate.wrapException(SqlSessionTemplate.java:250)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:137)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)
    at com.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)
    at com.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)
    at com.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)
    at com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)
    at com.iswoo.ohms.parsefile.ImportPerfDataJob.execute(ImportPerfDataJob.java:65)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
    Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.regex.Pattern$BnM.optimize(Pattern.java:5394)
    at java.util.regex.Pattern.compile(Pattern.java:1410)
    at java.util.regex.Pattern.<init>(Pattern.java:1124)
    at java.util.regex.Pattern.compile(Pattern.java:817)
    at java.lang.String.replaceFirst(String.java:1967)
    at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode$FilteredDynamicContext$1.handleToken(ForEachSqlNode.java:120)
    at org.apache.ibatis.parsing.GenericTokenParser.parse(GenericTokenParser.java:25)
    at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode$FilteredDynamicContext.appendSql(ForEachSqlNode.java:125)
    at org.apache.ibatis.builder.xml.dynamic.TextSqlNode.apply(TextSqlNode.java:19)
    at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
    at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode.apply(ForEachSqlNode.java:55)
    at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
    at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:22)
    at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:198)
    at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:45)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:16)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:27)
    at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:227)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:27)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:73)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:102)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:91)
    at org.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:192)
    at org.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:191)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:135)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)
    at com.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)
    at com.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)
    at com.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)
    at com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)
    [ohms] 2014-08-27 14:42:33 [com.iswoo.ohms.utils.ExceptionUtils.logErrorAndThrowException](48)-[ERROR] sqlStatement:com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch----parameter :[128个实体对象]
     [ohms] 2014-08-27 14:42:33 [com.iswoo.ohms.parsefile.ExtractData.insertPerf](606)-[ERROR] com.iswoo.ohms.exceptions.DAOBaseException: sqlStatement:com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch----parameter :[128个实体对象]
     [ohms] 2014-08-27 14:42:34 [com.iswoo.ohms.orm.GenericDAOImpl.insert](58)-[ERROR] excute com.iswoo.ohms.dao.impl.mappers.AssetPerfDataMapper.insertLUPerfDataBatch to insert data exception, condition[128个实体对象]
     org.mybatis.spring.MyBatisSystemException: SqlSession operation; nested exception is java.lang.OutOfMemoryError: Java heap space
    at org.mybatis.spring.SqlSessionTemplate.wrapException(SqlSessionTemplate.java:250)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:137)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)
    at com.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)
    at com.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)
    at com.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)
    at com.iswoo.ohms.parsefile.ExtractData.extractPerfDataFromCSV(ExtractData.java:267)
    at com.iswoo.ohms.parsefile.ImportPerfDataJob.execute(ImportPerfDataJob.java:65)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
    Caused by: java.lang.OutOfMemoryError: Java heap space
    at com.ibm.db2.jcc.c.gb.b(gb.java:1544)
    at com.ibm.db2.jcc.c.jb.Rc(jb.java:3096)
    at com.ibm.db2.jcc.c.jb.b(jb.java:2873)
    at com.ibm.db2.jcc.c.jb.b(jb.java:2788)
    at com.ibm.db2.jcc.c.jb.a(jb.java:2652)
    at com.ibm.db2.jcc.c.jb.b(jb.java:2543)
    at com.ibm.db2.jcc.c.jb.a(jb.java:2468)
    at com.ibm.db2.jcc.c.jb.a(jb.java:169)
    at com.ibm.db2.jcc.c.jb.b(jb.java:78)
    at com.ibm.db2.jcc.c.w.b(w.java:60)
    at com.ibm.db2.jcc.c.dc.c(dc.java:331)
    at com.ibm.db2.jcc.b.tf.db(tf.java:1746)
    at com.ibm.db2.jcc.b.tf.gb(tf.java:1817)
    at com.ibm.db2.jcc.b.tf.d(tf.java:2298)
    at com.ibm.db2.jcc.b.tf.Z(tf.java:1331)
    at com.ibm.db2.jcc.b.tf.execute(tf.java:1315)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:22)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:51)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:29)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:73)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:43)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:102)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:91)
    at org.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:192)
    at org.mybatis.spring.SqlSessionTemplate$4.doInSqlSession(SqlSessionTemplate.java:191)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:135)
    at org.mybatis.spring.SqlSessionTemplate.execute(SqlSessionTemplate.java:117)
    at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:190)
    at com.iswoo.ohms.orm.GenericDAOImpl.insert(GenericDAOImpl.java:55)
    at com.iswoo.ohms.dao.impl.AssetPerfDataDaoImpl.insertLUPerfDataBatch(AssetPerfDataDaoImpl.java:176)
    at com.iswoo.ohms.parsefile.ExtractData.insertPerf(ExtractData.java:602)