I did a quick test on EJB3 this morning, after Kabir had fixed Memory Leaks on HEAD/Branch AOP_MEMORY_LEAK_INVESTIGATION. (He is merging it back BTW).
Before Kabir fixes I was seeing many more references.
So, I've found these Strong References:
Reference 1:
public abstract class EJBContainer extends ClassContainer implements Container { ... protected ClassLoader classloader; // it could me transformed to WeakReference ...
For 3, we should take the same approach as I've done for AOP, and make sure that all strong references to the container are cleared on undeployment.