各位大神,小生在做excel导出的时候遇见了这么一个问题,作为实习生实在是莫名其妙,求各位大神帮个小忙。
java.lang.OutOfMemoryError: GC overhead limit exceeded
16:31:22.700 [nioEventLoopGroup-2-8] WARN io.netty.channel.nio.NioEventLoop - Unexpected exception in the selector loop.
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.ArrayList.iterator(ArrayList.java:814) ~[na:1.7.0_80]
at sun.nio.ch.WindowsSelectorImpl.updateSelectedKeys(WindowsSelectorImpl.java:496) ~[na:1.7.0_80]
at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:172) ~[na:1.7.0_80]
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) ~[na:1.7.0_80]
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) ~[na:1.7.0_80]
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:622) ~[netty-transport-4.0.32.Final.jar:4.0.32.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:310) ~[netty-transport-4.0.32.Final.jar:4.0.32.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) [netty-common-4.0.32.Final.jar:4.0.32.Final]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) [netty-common-4.0.32.Final.jar:4.0.32.Final]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]
16:31:23.334 [Thread-6] ERROR o.a.e.i.a.AcquireTimerJobsRunnable - exception during timer job acquisition: GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOf(Arrays.java:2367) ~[na:1.7.0_80]
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130) ~[na:1.7.0_80]
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114) ~[na:1.7.0_80]
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415) ~[na:1.7.0_80]
at java.lang.StringBuilder.append(StringBuilder.java:132) ~[na:1.7.0_80]
at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:171) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:212) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.executor.CachingExecutor.createCacheKey(CachingExecutor.java:139) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:120) ~[mybatis-3.3.0.jar:3.3.0]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:113) ~[mybatis-3.3.0.jar:3.3.0]
at org.activiti.engine.impl.db.DbSqlSession.selectListWithRawParameter(DbSqlSession.java:438) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:429) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:424) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.db.DbSqlSession.selectList(DbSqlSession.java:411) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.persistence.entity.JobEntityManager.findNextTimerJobsToExecute(JobEntityManager.java:157) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.cmd.AcquireTimerJobsCmd.execute(AcquireTimerJobsCmd.java:45) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.cmd.AcquireTimerJobsCmd.execute(AcquireTimerJobsCmd.java:29) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47) ~[activiti-spring-5.19.0.2.jar:5.19.0.2]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) ~[spring-tx-4.2.2.RELEASE.jar:4.2.2.RELEASE]
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) ~[activiti-spring-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at org.activiti.engine.impl.asyncexecutor.AcquireTimerJobsRunnable.run(AcquireTimerJobsRunnable.java:52) ~[activiti-engine-5.19.0.2.jar:5.19.0.2]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_80]
/report/collectionPaymentClass-report-down
java.lang.OutOfMemoryError: GC overhead limit exceeded
有可能是Eclipse发布项目时tomcat的内存不足,二是是不是Excel的数据量太大,超过10万应该是无法导出的
1、增加参数,-XX:-UseGCOverheadLimit
2、增加heap大小,-Xmx1024m
3、excel导出数据多的话,可以分批次导,每次从数据库查一点,写excel,再查再写