Но почему бы JDK не предоставить метод unloadClass (String name), чтобы помочь нам удалить отдельный класс?
На этот вопрос можно ответить, принимая во внимание одну из основных философий Java.
Java была создана с учетом того, что пользователю не приходится иметь дело с управлением памятью.
Когда вы говорите «выгрузка класса», это, по сути, означает, что удаление ссылок на класс освобождает память из области метода / области класса, где хранятся данные, относящиеся к классу.
Есть ли какие-либо трудности или побочные эффекты для обеспечения этой функции?
Наиболее важным побочным эффектом является то, что пользователь может вмешиваться в область метода, которая является общей для всех потоков, и сама по себе не всегда безопасна для потоков.
Для более детального понимания jvm вы можете обратиться по ссылке ниже:
http://blog.jamesdbloom.com/JVMInternals.html