`
san_yun
  • 浏览: 2663792 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

PreparedStatementCache导致Java heap space

 
阅读更多

今天发现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&param2=%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&param2=%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

 

 

  • 大小: 196.3 KB
  • 大小: 198.1 KB
分享到:
评论

相关推荐

    java.lang.OutOfMemoryError: Java heap space 解决方法

    "Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...

    解决Java_heap_space问题

    ### 解决Java_heap_space问题:深入理解与策略 在Java应用程序开发与运行过程中,经常会遇到一个常见的内存管理问题——“Java heap space”。这个问题通常表现为Java虚拟机(JVM)在执行过程中因可用堆内存不足而...

    java抛java heap space

    本文将详细介绍导致该错误的原因、如何调整 JVM 参数以及最佳实践等,帮助开发者有效解决 Java Heap Space 错误。 #### 知识点解析: 1. **Java Heap Space 概念**: - **定义**:Java Heap Space 是 JVM 中用于...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    ### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....

    关于(java heap space)内存溢出的解决办法

    在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    ### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...

    编译时出现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程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...

    tomcat 解决Java heap space问题

    标题中的“tomcat 解决Java heap space问题”指的是在运行Apache Tomcat服务器时,由于Java应用程序内存分配不当或资源消耗过大导致的“Java heap space”错误。这个问题通常出现在Java虚拟机(JVM)试图为对象分配...

    Java heap space 解决方法

    ### Java Heap Space 解决方法详解 #### 一、概述 在Java应用程序运行过程中,经常会遇到一个常见的错误提示:`java.lang.OutOfMemoryError: Java heap space`。这通常意味着Java虚拟机(JVM)的堆内存空间不足,...

    An internal error occurred during: \"Building workspace\". Java heap space

    Java heap space" 描述的是一个常见的Eclipse集成开发环境(IDE)中的问题,当用户尝试构建工作区时遇到内存不足的情况。这个错误表明Eclipse在执行任务时耗尽了Java虚拟机(JVM)分配的堆内存。以下是关于这个问题...

    java heap space解决方法

    ### Java Heap Space 解决方法详解 #### 一、引言 在Java应用程序运行过程中,经常会遇到“Out of Memory Error: Java Heap Space”的错误提示。这种错误通常发生在Java虚拟机(JVM)的堆内存不足时,导致程序无法...

    kettle内存溢出(Java heap space)以及解决方法.docx

    这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java虚拟机中最大的一块内存区域,用于存储对象实例。当程序创建新的对象并分配给堆时,...

    java虚拟机OutOfMemoryError:Java heap space堆dump文件

    java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    在Java程序中,`java.lang.OutOfMemoryError: Java heap space` 是一个常见的错误,意味着程序在运行过程中耗尽了JVM分配的堆内存。这个错误通常发生在创建大量对象或者单个对象占用过多内存时。 一、问题描述与...

    解决FlashBuilder4编译慢报java heap space堆空间异常错误需要替换的文件

    经常遇到Java heap space的问题,编译起来就没有效率可言了,对于一个开发者来说真的很痛苦。 之前网络上的方案各种改内存分配的数量,总的来说没什么真正的效果;现在来一个新的方案和大家分享;主要是替换掉一些三...

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    ### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...

    java heap space tomcat6 内存溢出

    如果您的tomcat是6.X版本且是安装版的,那么系统设置环境变量是不起作用的,因为这个版本的只能通过点击tomcat6.exe 或tomcat6w.exe才能执行,这种方法可以通过修改注册表能解决:本例是以内存3G为例的。...

Global site tag (gtag.js) - Google Analytics