java oom问题,求大神解答

crazy_itman 上海天玑科技 系统架构师  2015-09-29 01:24:00
Exception in thread "pool-1-thread-3" java.lang.OutOfMemoryError: Java heap space
Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" at org.drools.reteoo.RuleTerminalNode.createLeftTuple(RuleTerminalNode.java:556)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:71)
at org.drools.reteoo.JoinNode.propagateFromLeft(JoinNode.java:106)
at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:94)
at org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:232)
at org.drools.reteoo.CompositeLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:116)
at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:151)
at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:364)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:364)
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:302)
at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:254)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:366)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:327)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:950)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:894)
at com.bill99.prm.calc.service.TradeCalcService$1MyThread.run(TradeCalcService.java:272)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
java.lang.OutOfMemoryError: Java heap space
at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.java:879)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1057)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415)
at oracle.jdbc.OracleDatabaseMetaData.getTables(OracleDatabaseMetaData.java:2472)
at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnectionNoQuery(DefaultConnectionTester.java:185)
at com.mchange.v2.c3p0.impl.DefaultConnectionTester.activeCheckConnection(DefaultConnectionTester.java:62)
at com.mchange.v2.c3p0.AbstractConnectionTester.activeCheckConnection(AbstractConnectionTester.java:67)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:368)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishIdleResource(C3P0PooledConnectionPool.java:310)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1999)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

生产服务器上出现的错误,测试环境和本地都没有该错误,并且生产和测试服务器上的代码完全一致,生产服务器上的硬件配置要高于测试服务器硬件配置,搞了一天多了,无解。请大神指点迷津。。。。。。。。。。。。。
注:生产服务器无法登陆
...全文
120 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bartholomew4 2015-09-30
引用 8 楼 zkn_CS_DN_2013 的回复:
[quote=引用 7 楼 bartholomew4 的回复:] com.bill99.prm.calc.service.TradeCalcService$1MyThread.run(TradeCalcService.java:272) 快钱的- -,你是快钱的还是快钱提供的JAR,方不方便贴上代码分析下。。。。 另外引起内存溢出的原因其实是内存爆满,对于一个大项目开发不当很容易出现的,测试和本地没问题的原因很简单,你没有长期运行。比如某个类中有定义了public static Map map;作为一个常量内存表使用,但没有对这个map进行清理,造成map量越来越大,直到屌爆为止。至于报错报错JDBC的愿意你也很正常,一般的程序运算数据库不会太大,只有当获取数据库大批数据,图片和文件时,内存需求会上升,所以一般内存溢出都是在这些操作上引起的。 最后一种情况是我用hibernate遇到过的,因为2个对象项目引用1对多或多对多造成的死循环,不知道你有没有类似hibernate这个功能的代码
这位哥们厉害! 我确实快钱的,你的意见对我也有些启发,我是刚来的新人,连环境都还没熟悉,领导就让我解决这个头疼的问题,关键是生产上的服务器我们是既碰不得又摸不得,更别说远程调试什么了。从生产服务器要来的内存dump文件有5G多,想用mat分析下,结果根本打不开! 哥们有没有遇到我我现在的这种状况,是怎么解决的? 领导一直在催,急死了![/quote] 我不是已经贴出来了错误的位置了吗,你去检查下这个位置的代码是不是会大量使用到内存,另外一种判断是否是静态常量搞死内存的简单方法就是重启服务器,看看还有没有这个问题,如果没有那就是静态常量的锅,不然你就慢慢找锅或者背锅吧
回复
crazy_itman 2015-09-29
引用 7 楼 bartholomew4 的回复:
com.bill99.prm.calc.service.TradeCalcService$1MyThread.run(TradeCalcService.java:272) 快钱的- -,你是快钱的还是快钱提供的JAR,方不方便贴上代码分析下。。。。 另外引起内存溢出的原因其实是内存爆满,对于一个大项目开发不当很容易出现的,测试和本地没问题的原因很简单,你没有长期运行。比如某个类中有定义了public static Map map;作为一个常量内存表使用,但没有对这个map进行清理,造成map量越来越大,直到屌爆为止。至于报错报错JDBC的愿意你也很正常,一般的程序运算数据库不会太大,只有当获取数据库大批数据,图片和文件时,内存需求会上升,所以一般内存溢出都是在这些操作上引起的。 最后一种情况是我用hibernate遇到过的,因为2个对象项目引用1对多或多对多造成的死循环,不知道你有没有类似hibernate这个功能的代码
这位哥们厉害! 我确实快钱的,你的意见对我也有些启发,我是刚来的新人,连环境都还没熟悉,领导就让我解决这个头疼的问题,关键是生产上的服务器我们是既碰不得又摸不得,更别说远程调试什么了。从生产服务器要来的内存dump文件有5G多,想用mat分析下,结果根本打不开! 哥们有没有遇到我我现在的这种状况,是怎么解决的? 领导一直在催,急死了!
回复
bartholomew4 2015-09-29
com.bill99.prm.calc.service.TradeCalcService$1MyThread.run(TradeCalcService.java:272) 快钱的- -,你是快钱的还是快钱提供的JAR,方不方便贴上代码分析下。。。。 另外引起内存溢出的原因其实是内存爆满,对于一个大项目开发不当很容易出现的,测试和本地没问题的原因很简单,你没有长期运行。比如某个类中有定义了public static Map map;作为一个常量内存表使用,但没有对这个map进行清理,造成map量越来越大,直到屌爆为止。至于报错报错JDBC的愿意你也很正常,一般的程序运算数据库不会太大,只有当获取数据库大批数据,图片和文件时,内存需求会上升,所以一般内存溢出都是在这些操作上引起的。 最后一种情况是我用hibernate遇到过的,因为2个对象项目引用1对多或多对多造成的死循环,不知道你有没有类似hibernate这个功能的代码
回复
那就不知道了,这个该让公司的技术人员来看了
回复
crazy_itman 2015-09-29
引用 1 楼 wula0010 的回复:
内存溢出啊,改下jvm的配置。测试和本地的没问题,是数据量小,生产服务器上肯定数据量大。 set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m 这个是tomcat的catalina.bat里配置的,你看你是什么服务器..................
看清问题啊哥们: 生产服务器上出现的错误,测试环境和本地都没有该错误,并且生产和测试服务器上的代码完全一致,生产服务器上的硬件配置要高于测试服务器硬件配置,搞了一天多了,无解。请大神指点迷津。。。。。。。。。。。。。 注:生产服务器无法登陆
回复
crazy_itman 2015-09-29
引用 2 楼 sinat_31240689 的回复:
看清问题啊哥们: 生产服务器上出现的错误,测试环境和本地都没有该错误,并且生产和测试服务器上的代码完全一致,生产服务器上的硬件配置要高于测试服务器硬件配置,搞了一天多了,无解。请大神指点迷津。。。。。。。。。。。。。 注:生产服务器无法登陆
回复
内存溢出还是比较好解决的,起码不是代码的错误,
回复
回复
wula0010 2015-09-29
内存溢出啊,改下jvm的配置。测试和本地的没问题,是数据量小,生产服务器上肯定数据量大。 set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m 这个是tomcat的catalina.bat里配置的,你看你是什么服务器..................
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-09-29 01:24
社区公告
暂无公告