java - 内存泄漏随着 T4CPreparedStatement 的增加

标签 java hibernate memory-leaks

我们有一个使用 hibernate 4.2.22 (JBoss 6.4.7) 的应用程序。在我们的代码中,我们不使用任何PreparedStatements,每个数据库问题都由hibernate处理。

但是在性能测试期间我们遇到了 oom。其原因似乎是大量的 oracle.jdbc.driver.T4CPreparedStatement 实例,我们猜测它们是从 hibernate 创建的。 即使我们从 VisualVM 执行 GC,它们仍然存在,并且在我们运行测试时会增加。

大家觉得怎么样,有办法解决这个问题吗?

最诚挚的问候 弗雷德里克

最佳答案

我想我们已经解决了这个问题。我们在 JBoss 中配置了数据源,如下所示:

 <pool>
  <min-pool-size>200</min-pool-size>
  <max-pool-size>400</max-pool-size>
 </pool>
..
<statement>
  <prepared-statement-cache-size>100</prepared-statement-cache-size>
  <share-prepared-statements>true</share-prepared-statements>
 </statement>

现在我们将其更改为

<statement>
 <prepared-statement-cache-size>5</prepared-statement-cache-size>
 <share-prepared-statements>true</share-prepared-statements>
</statement>

现在 GC 似乎运行良好。我猜想准备好的声明池太大了。我猜我们有 400*100,现在我们有 400*5。

欢迎大家提出意见。 此致 弗雷德里克

关于java - 内存泄漏随着 T4CPreparedStatement 的增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121911/

相关文章:

java - (Spring Boot 2)java.lang.IllegalStateException : Failed to load ApplicationContex

javascript - Jquery/Javascript 内存泄漏

java - 在给定字符串中搜索字符集的最快算法

java - spring hibernate .. H2 数据库 - 找不到模式

java - 从类对象获取 Pane 的宽度和高度的问题 - Javafx

java - Web 应用程序、离线模式和同步

c - 32 位 CPU 处理器内存泄漏,64 位处理器 CPU 无内存泄漏

android - 使用 YouTubeThumbnailViews 切换 Activity 时泄漏

java - 如何在Windows上运行生产者和消费者控制台

java - 如何使用 Clover ETL 中的重新格式化组件更改参数值