... если я смогу уменьшить пространство PermGen, необходимое, например, имея один
ClassLoader для каждого действия, чтобы разрешить выгрузку классов.
Да, классы могут быть выгружены только в том случае, если используемый Classloader является сборщиком мусора. Это означает, что ссылки на каждый отдельный класс и на сам загрузчик классов должны быть равны нулю.
Насколько велик ваш PermGen? Вы можете избежать неприятностей, просто столкнувшись с PermGen:
-XX:MaxPermGen=256m
в вашей командной строке. Это не редкость, чтобы установить его на 512 м. Если вы хотите по-настоящему надежное решение, вам нужно пойти по пути использования пользовательского загрузчика классов для каждого «действия». Чтобы помочь с отладкой, добавьте также следующий понятный аргумент в вашу командную строку:
-XX:+TraceClassLoading
Это выведет классы по мере их загрузки в JVM в командную строку.