Tomcat内存泄漏

3
我发现这是Tomcat上一个众所周知的问题,所以我正在尝试在我的服务器上解决它。
在我的Tomcat上部署/卸载war文件时,经常会出现检查内存泄漏的警告。
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://dev59.com/LG455IYBdhLWcg3wD_wB#4565522建议:

确保您的Web应用程序不使用任何在Web容器共享库中的Java类。如果您有任何共享库,请确保没有对这些库中对象的强引用。

这是什么意思?我在我的Eclipse项目中使用Maven,并且所有依赖项都会自动加载。但是我必须手动添加Tomcat库到项目构建路径(服务器运行时)。这是问题吗?Tomcat jars是“共享库”吗?

1个回答

3

在运行时由Tomcat提供的Jars应该被标记为provided,如果你需要它们进行编译但是期望Tomcat容器在运行时提供它们,例如:

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

(版本仅仅是我举例而已……请使用适当的内容。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接