У меня не было должного опыта с рефлексией, но я хотел бы предложить следующее:
Иметь класс (скажем, LoadedClassesManager), содержащий записи обо всех экземплярах, которые были созданы.Он также должен реализовывать наблюдаемый шаблон (т.е. отвечать на прослушиватели событий).
Чтобы все экземпляры загруженных классов вызывались вызовом метода в LoadedClassManager (что-то вроде getNewInstance(Class clazz, params)
).Метод также регистрирует вызывающий объект в качестве прослушивателя (для случая, когда класс выгружается).
Таким образом, когда некоторый класс должен быть выгружен, LoadedClassesManager будет вызывать даже обработчики прослушивателей событий для обработкикласс выгружается соответственно.