今天发现PreparedStatementCache会导致java heap space full
DBCP的poolPreparedStatements是在每个connection中缓存一定数量的preparestatement,用于减少driver的statement对象创建,和数据库的网络交互以及数据库的cursor创建。
<property name="poolPreparedStatements" value="true" /> <property name="maxOpenPreparedStatements" value="10" />这段报错可以重线,我觉得很上面的SQL有点关系,暂时先去掉PreparedStatementCache
去掉prepacedStatementCache还是会报错:
13-04-09 00:21:47 [INFO] com.duitang.biz.common.SqlServiceImpl - SELECT cost 5079ms: SELECT COUNT(*) FROM `auth_user` Exception in thread "btpool0-5" java.lang.OutOfMemoryError: GC overhead limit exceeded Exception in thread "ReplicaSetStatus:Updater" 13-04-09 00:23:38 [ERROR] com.duitang.dboss.service.ServiceInvoker - ServiceInvoker FAIL url=dboss://sqlService/queryForList?param1=SELECT+%60auth_user%60.%60id%60%2C+%60auth_user%60.%60username%60%2C+%60auth_user%60.%60first_name%60%2C+%60auth_user%60.%60last_name%60%2C+%60auth_user%60.%60email%60%2C+%60auth_user%60.%60password%60%2C+%60auth_user%60.%60is_staff%60%2C+%60auth_user%60.%60is_active%60%2C+%60auth_user%60.%60is_superuser%60%2C+%60auth_user%60.%60last_login%60%2C+%60auth_user%60.%60date_joined%60+FROM+%60auth_user%60+ORDER+BY+%60auth_user%60.%60username%60+ASC¶m2=%5B%5D 13-04-09 00:23:38 [ERROR] com.duitang.dboss.service.ServiceInvoker - ServiceInvoker FAIL url=dboss://sqlService/queryForList?param1=SELECT+%60auth_user%60.%60id%60%2C+%60auth_user%60.%60username%60%2C+%60auth_user%60.%60first_name%60%2C+%60auth_user%60.%60last_name%60%2C+%60auth_user%60.%60email%60%2C+%60auth_user%60.%60password%60%2C+%60auth_user%60.%60is_staff%60%2C+%60auth_user%60.%60is_active%60%2C+%60auth_user%60.%60is_superuser%60%2C+%60auth_user%60.%60last_login%60%2C+%60auth_user%60.%60date_joined%60+FROM+%60auth_user%60+ORDER+BY+%60auth_user%60.%60username%60+ASC¶m2=%5B%5D java.lang.OutOfMemoryError: Java heap space 13-04-09 00:23:38 [ERROR] com.duitang.dboss.remote.nio.DbossServerHandler - Dboss invoker ERROR com.duitang.dboss.remote.oio.DbossException: java.lang.reflect.InvocationTargetException at com.duitang.dboss.service.ServiceInvoker.accept(ServiceInvoker.java:99) at com.duitang.dboss.remote.nio.DbossServerHandler.messageReceived(DbossServerHandler.java:80) at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:98) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:796) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69) at org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:307) 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) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor71.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.duitang.dboss.service.ServiceInvoker.accept(ServiceInvoker.java:89) ... 9 more Caused by: java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2123) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1900) at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3401) at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:483) at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3096) at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2266) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2687) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2318) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:644) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:714) at com.duitang.biz.common.SqlServiceImpl.queryForList(SqlServiceImpl.java:109) ... 13 more
相关推荐
"Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
### 解决Java_heap_space问题:深入理解与策略 在Java应用程序开发与运行过程中,经常会遇到一个常见的内存管理问题——“Java heap space”。这个问题通常表现为Java虚拟机(JVM)在执行过程中因可用堆内存不足而...
本文将详细介绍导致该错误的原因、如何调整 JVM 参数以及最佳实践等,帮助开发者有效解决 Java Heap Space 错误。 #### 知识点解析: 1. **Java Heap Space 概念**: - **定义**:Java Heap Space 是 JVM 中用于...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
标题中的“tomcat 解决Java heap space问题”指的是在运行Apache Tomcat服务器时,由于Java应用程序内存分配不当或资源消耗过大导致的“Java heap space”错误。这个问题通常出现在Java虚拟机(JVM)试图为对象分配...
### Java Heap Space 解决方法详解 #### 一、概述 在Java应用程序运行过程中,经常会遇到一个常见的错误提示:`java.lang.OutOfMemoryError: Java heap space`。这通常意味着Java虚拟机(JVM)的堆内存空间不足,...
Java heap space" 描述的是一个常见的Eclipse集成开发环境(IDE)中的问题,当用户尝试构建工作区时遇到内存不足的情况。这个错误表明Eclipse在执行任务时耗尽了Java虚拟机(JVM)分配的堆内存。以下是关于这个问题...
### Java Heap Space 解决方法详解 #### 一、引言 在Java应用程序运行过程中,经常会遇到“Out of Memory Error: Java Heap Space”的错误提示。这种错误通常发生在Java虚拟机(JVM)的堆内存不足时,导致程序无法...
这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java虚拟机中最大的一块内存区域,用于存储对象实例。当程序创建新的对象并分配给堆时,...
java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。
在Java程序中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,意味着程序在运行过程中耗尽了JVM分配的堆内存。这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与...
经常遇到Java heap space的问题,编译起来就没有效率可言了,对于一个开发者来说真的很痛苦。 之前网络上的方案各种改内存分配的数量,总的来说没什么真正的效果;现在来一个新的方案和大家分享;主要是替换掉一些三...
### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...
如果您的tomcat是6.X版本且是安装版的,那么系统设置环境变量是不起作用的,因为这个版本的只能通过点击tomcat6.exe 或tomcat6w.exe才能执行,这种方法可以通过修改注册表能解决:本例是以内存3G为例的。...