Tomcat:在不重启服务器的情况下重新部署war没有清理静态变量。
class Foo {
static Map<String, Object> cache = new HashMap<>();
}
重新部署修改后的war后,缓存不会被清理并保留旧值。
重新部署如何进行?
有些情况 Tomcat 无法为您解决,但您必须照顾好自己:
当不再有对类和对象的引用时,它们可能会被垃圾收集 - 这些引用的可能性之一可能是您自己启动的线程,并且在 Web 应用程序关闭时不会终止。它们是 GC 可达性检查的根源,也是此类问题的常见根源。
可能有更多条件,但我想说自定义线程是最常见的。