Я создал крошечный пользовательский загрузчик классов в фиктивном приложении, чтобы понять, как работает динамическая загрузка классов. Для этого вопроса мне не нужно вдаваться в подробности о том, что он делает, кроме упоминания о том, что он создает два разных экземпляра моего загрузчика классов и каждый из них загружает разные классы, чтобы я мог удовлетворить себя, подтвердив " ClassNotFoundException "из одного из экземпляров загрузчика классов, когда только другой загрузил определенный класс.
Однако у меня есть вопрос, который можно легко выразить с помощью следующей, надеюсь, не требующей пояснений строки кода.
Class clazz = myClassLoader.loadClass(theClazz);
Эта строка кода заставляет мой пользовательский загрузчик классов загружать байты класса в память и возвращать экземпляр объекта Class
для этого класса.
У меня такой вопрос: где находятся физические байты памяти для загруженного класса (т. Е. Содержимое файла .class)? Они хранятся внутри объекта ClassLoader
или внутри объекта Class
(после чего объект ClassLoader просто содержит внутреннюю ссылку на этот объект Class
) - или где-то еще целиком?