我們在下面的配置中使用c3p0作爲Hibernate中的共享庫。我們懷疑這個庫中可能存在內存泄漏。我們轉儲應用程序的內存堆,它顯示「com.mchange.v2.c3p0.stmt.GlobalMaxOnlyStatementCache」類型的一個對象使用2.2GB內存(佔所有內存的61.6%),並且它持續增長,直到內存不足。據我瞭解,這個類用於緩存PreparedStatements。我們的配置對此值使用了100,這意味着最多應該緩存100個語句。Hibernate中c3p0可能的內存泄漏?
configuration
.setProperty("hibernate.c3p0.max_size", "25")
.setProperty("hibernate.c3p0.min_size", "2")
.setProperty("hibernate.c3p0.initial_pool_size", "2")
.setProperty("hibernate.c3p0.timeout", "3600")
.setProperty("hibernate.c3p0.max_statements", "100")
.setProperty("hibernate.c3p0.idle_test_period", "300")
.setProperty("hibernate.c3p0.acquire_increment", "2")
.setProperty("hibernate.c3p0.maxConnectionAge", "3600")
.setProperty("hibernate.c3p0.numHelperThreads", "6")
在此先感謝您的幫助!
嗨。幾個簡單的問題:1)你使用的是什麼版本的c3p0? 2)你可以通過JMX監視你的應用程序嗎? c3p0在那裏報告有關其語句緩存的大量信息,該信息可能會有所幫助; 3)你使用的是什麼dbms/jdbc驅動程序?謝謝! –