2013-12-16 97 views
1

我有一個運行在tomcat中的java web應用程序,通過休眠與我的db通信。 is_enabled對數據庫的字段映射作爲一個數據庫中的TINYINT,但在hbm.xml一個布爾值:休眠映射導致內存泄漏

<property name="isEnabled" type="boolean"> 
     <column name="is_enabled" /> 
</property> 

我知道沒有什麼是錯的映射,因爲我有另一列是一個TINYINT(1)映射爲hbm.xml中的布爾值。但是,當我添加此屬性我的WAR不加載和在Tomcat我得到幾個:

org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [] appears to have started a thread name 
[Job_Executor2] but has failed to stop it. This is very likely to 
create a memory leak. 

任何想法如何去調試呢?

+0

我想我們在這裏錯過了一些上下文。 Job_Executor2做什麼? –

+0

嗨,我**高度懷疑你所描述的可能會導致內存泄漏。 (或者更清楚的是一個線程泄漏)。 – Taylor

+0

@AdamArold有多個線程導致問題..不只是Job_Executor2。 – invictvs1

回答

1

我知道映射沒什麼問題,因爲我有另一列 ,它是一個TINYINT(1)並映射爲hbm.xml中的布爾值。

僅僅通過查看布爾屬性本身就很難評論。也許看看整個hbm.xml可能會提供一個想法。另外,是否有代碼在您的應用程序的init(或您的servlet或bean之一或您有什麼)的init處執行,並且正在查看此屬性並對其執行操作?

這個屬性單獨是罪魁禍首是極不可能的。機會是內存泄漏(或者你有什麼作爲根本原因)已經存在,並且該屬性的存在(以及休眠中的任何代碼...或應用中的)都會導致翻轉點。

也就是說,罪魁禍首不是這個屬性。它只是一個催化劑,使現有的軟件或系統錯誤顯現出來。

任何想法如何去調試呢?

對於這樣的問題,最好使用像JProfiler這樣的專業($$$)分析工具。

但我也使用其他開源或免費工具來解決內存相關的問題(由Web服務,休眠或你有什麼)。有一些選項。

  1. Eclipse Memory Analyzer - 這個工具是一個天賜良機,我當我不得不根導致一些問題的代碼與Hibernate交互。

  2. VisualGCVisualVM - 這是兩個不同但密切相關的工具,可以幫你根源問題

這樣的事情需要(或者至少窄其中可能存在的問題。)一個多管齊下的方法,你會發現自己使用幾種工具來剝皮這隻貓。

給出上面列出的這三種工具。希望他們幫助。