2014-10-29 76 views
3

我發現這是Tomcat上的一個衆所周知的問題,所以我試圖在我的服務器上解決它。Tomcat內存泄漏

部署/在我的Tomcat取消部署戰爭的文件,我經常會收到這樣的警報檢查內存泄漏:

The following web applications were stopped (reloaded, undeployed), but their 
classes from previous runs are still loaded in memory, thus causing a memory 
leak (use a profiler to confirm): 
/GEKKO 
/GEKKO 
/GEKKO 
/LinkPlatform 

這個答案https://stackoverflow.com/a/4565522/1061499建議到:

確保您的網絡應用程序不使用任何Java Web容器共享庫中的類。如果您有任何共享庫,請確保沒有強烈提及這些庫中的對象

這是什麼意思?我在我的Eclipse項目中使用Maven,並且所有依賴項都會自動加載。但是我必須在項目構建路徑(Server Runtime)中手動添加Tomcat庫。這是問題嗎? Tomcat 罐子「共享庫」?

回答

3

如果您需要它們進行編譯,但希望Tomcat容器在運行時提供它們,那麼Tomcat在運行時提供的Jars應該被劃分爲provided

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 

(版本只是我扔在那裏...使用任何適當的東西)。