2014-10-29 78 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> 

(版本只是我扔在那里...使用任何适当的东西)。