我有一个在Spring Integration中构建的应用程序,它有很多Store过程调用(使用int-jdbc:stored-proc-outbound-gateway)和Prepared-statement调用(使用int-jdbc:outbound-gateway)。
我遇到堆大小问题几次。我没有增加堆大小,而是使用堆转储并尝试使用Eclipse中的内存分析插件来分析它们。该报告向我展示了两次可能的泄漏,
加载的“oracle.jdbc.driver.T4CCallableStatement”的382个实例 “org.jboss.modules.ModuleClassLoader @ 0xb0bee3c8”占据225,949,088 (50.00%)字节。这些实例是从一个实例引用的 “java.lang.Object []”,由“”关键字加载 oracle.jdbc.driver.T4CCallableStatement java.lang.Object []
org.jboss.modules.ModuleClassLoader @ 0xb0bee3c8
295个“oracle.jdbc.driver.T4CPreparedStatement”实例,由 “org.jboss.modules.ModuleClassLoader @ 0xb0bee3c8”占据49,342,360 (10.92%)字节。这些实例是从一个实例引用的 “java.lang.Object []”,由“”关键字加载 java.lang.Object [] oracle.jdbc.driver.T4CPreparedStatement
org.jboss.modules.ModuleClassLoader @ 0xb0bee3c8
任何人都可以帮助我吗?什么可能导致这些问题? int-jdbc:outbound-gateway的配置是
<int-jdbc:outbound-gateway id="test1"
data-source="dataSource" request-channel="testchannel1"
reply-channel="testchannel2" query="select * from EMP"
row-mapper="testMapper" max-rows-per-poll="0"
requires-reply="false">
<int-jdbc:request-handler-advice-chain>
<bean class="com..service.NullReplyAdvice" />
</int-jdbc:request-handler-advice-chain>
</int-jdbc:outbound-gateway>
int-jdbc的配置:outbound-gateway
<int-jdbc:sql-parameter-definition
name="P_LIST" direction="OUT" type="#{T(oracle.jdbc.OracleTypes).ARRAY}"
type-name="T_LIST" return-type="sqlReturnArray" />
<int-jdbc:sql-parameter-definition
name="RESPONSE_CODE" direction="OUT" type="VARCHAR" />
<int-jdbc:sql-parameter-definition
name="RESPONSE_DESC" direction="OUT" type="VARCHAR" />
<int-jdbc:parameter name="USER_NUMIN" expression="payload.userId" />
<int-jdbc:parameter name="STORE_NUMIN" expression="payload.storeId" />
<int-jdbc:parameter name="ZONE_NUMIN" expression="payload.zoneId" />
<int-jdbc:parameter name="SLOT_NUMIN" expression="payload.slotTodelete" />
<int-jdbc:parameter name="RANGE_COUNTIN" value="0" />
<int-jdbc:parameter name="APP_PARAMIN" value="DELETE" />
<int-jdbc:request-handler-advice-chain>
<bean class="com.test.HttpRequestInterceptor"></bean>
</int-jdbc:request-handler-advice-chain>
</int-jdbc:stored-proc-outbound-gateway>
答案 0 :(得分:1)
如果使用spring jdbc / hibernate实现dao层,则可能不会出现此问题。 完成执行后,确保准备好的语句正确关闭。