Java tomcat6 OOM,大量的com.mysql.jdbc.StatementImpl实例

时间:2014-03-24 14:32:37

标签: java mysql jdbc

我有一个Java Web应用程序可以运行大约2天。之后,它会因OOM堆空间错误而挂起。

线程转储提供有关堆的以下信息:

  

堆新一代总计38336K,使用38181K [0x00000000d5a00000,0x00000000d8390000,0x00000000d8390000)
  eden space 34112K,100%使用[0x00000000d5a00000,0x00000000d7b50000,0x00000000d7b50000)   从空间4224K,96%使用[0x00000000d7b50000,0x00000000d7f49628,0x00000000d7f70000)   空间4224K,0%使用[0x00000000d7f70000,0x00000000d7f70000,0x00000000d8390000)   并发标记扫描生成总计481728K,使用481727K [0x00000000d8390000,0x00000000f5a00000,0x00000000f5a00000)   concurrent-mark-sweep perm gen total 38172K,使用22900K [0x00000000f5a00000,0x00000000f7f47000,0x0000000100000000]

我创建了一个我用VisualVM读取的heapdump。这告诉我,有大量(120万)StatementImpl实例占用了大量内存。

有关申请的一些信息:

  • 16 sql connections
  • 每秒32个插入语句
  • 每秒约200个程序调用

所有插入和过程调用分为16个连接。我从不关闭连接,因为我一直在使用它们。我百分百肯定会关闭所有陈述和准备好的陈述。

可能是大量StatementImpl实例的原因是什么?

0 个答案:

没有答案
相关问题