ServletContainerInitializers are not cleaned up on undeploy. This causes a memory leak.
I'm attaching a couple of maven projects to reproduce the problem. The first project creates a jar with an SCI that allocates 50MB. The second project is a plain war that packages the SCI's jar.
Redeploy the WAR several times and you will get an OOME.