每次deploy Struct应用都会带来内存泄露的问题,原因很简单,但解决方案却一直没找到。

问题的原因,部的Struct应用一访问,就会向ThreadLocal加入一些Context信息。而Context相

关类都有WebappClassloader加载。undeploy应用之后,Context相关类因为ThreadLocal的引用

而无法unload,导致WebappClassloader无法unload,最终导致由WebappClassloader加载的所有类

都无法unload,java.lang.OutOfMemoryError: PermGen space出现。

看这个图就比较清楚了:

wKiom1ZxVLOARPi_AABu7hUEPh8471.png

多几次deploy/undeploy就会出现,有经验的同学请帮出出招。