我们正在测试供应商代码,为了提高性能,我们安装了JProfiler 9.1.1。 JProfiler有助于识别性能问题。
JProfiler确定的一件事是“Unclosed Collected”连接。
JProfiler将“Unclosed Collected”连接定义为:
虚拟连接,其中已经分发了连接对象 数据库池已被垃圾收集,但尚未调用close()。这是一个明确的连接泄漏。
根据JProfiler,触发“Unclosed Collected”连接的方法是:
org.springframework.jdbc.core.JdbcTemplate.query(
java.lang.String, java.lang.Object[ ],
org.springframework.jdbc.core.RowMapper)
我们正在使用SQL Server 2012和JBoss EAP 6.3.3。
数据源配置
<datasource jta="false" jndi-name="java:/jdbc/abcclmicdds" pool-name="clmDataSource" enabled="true" use-ccm="false">
<connection-url>jdbc:IP_GOES_HERE</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<driver>sqlserver2012</driver>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>60</max-pool-size>
</pool>
<security>
<user-name>USERNAME_GOES_HERE</user-name>
<password>PASSWORD_GOES_HERE</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<timeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
</timeout>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
供应商回来并声称JProfiler错误地将其识别为“Unclosed Collected”。
JdbcTemplate旨在自动关闭连接。有没有人遇到过这样的事情? JProfiler可能会错误地识别这些连接吗?