Где хранятся метаданные внутренних классов Java в памяти

Мы знаем, что PermGen или «постоянная генерация» — это место, где хранятся метаданные, описывающие пользовательские классы (а не внутренние классы Java) и статические ссылки. Но где именно хранятся метаданные внутренних классов Java (т. е. классы, присутствующие в rt, jar ресурсов и т. д.)?

Я задаю этот вопрос в отношении версий Java до 1.8


person Ravi Ranjan    schedule 16.02.2016    source источник
comment
что такое внутренние классы Java?   -  person wero    schedule 16.02.2016
comment
Под внутренними классами Java я подразумеваю классы, присутствующие в rt, jar ресурсов и т. д.   -  person Ravi Ranjan    schedule 16.02.2016
comment
Все классы хранятся в метапространстве. Нет конкретного адреса, зарезервированного для классов из конкретной банки. Примечание: в Java 9 нет rt.jar. Metspace не имеет единого адреса в памяти и в действительности может находиться в любом количестве мест в собственной памяти.   -  person Peter Lawrey    schedule 16.02.2016
comment
Спасибо @PeterLawrey, я думаю, мне нужно снова отредактировать свой вопрос. Я пытаюсь понять это для версий Java до 1.8. То же самое и для java 1.6, 1.7?   -  person Ravi Ranjan    schedule 16.02.2016
comment
В Java 7 и предыдущих версиях PermGen находился в фиксированном месте и с фиксированным размером. Однако знание местоположения — это не то, что вы могли бы использовать.   -  person Peter Lawrey    schedule 16.02.2016
comment
Мы можем изменить минимальный и максимальный размер permgen. Я не хочу использовать место, где хранятся метаданные внутреннего класса java/jre. Это для моего собственного понимания управления памятью Java!   -  person Ravi Ranjan    schedule 16.02.2016
comment
Нет никакой разницы между тем, что вы называете «пользовательскими классами» и «внутренними классами».   -  person Holger    schedule 17.02.2016
comment
После всех комментариев выше и моего изучения документации по Java и всего остального, я думаю, что вы, ребята, правы, и, по словам @Holger, нет никакой разницы между пользовательским классом и внутренним классом. Все эти метаданные отправляются в Permgen, когда этот класс загружается, и очищаются, как только они становятся недоступными. Спасибо всем за ваше время.   -  person Ravi Ranjan    schedule 17.02.2016


Ответы (1)


После всех приведенных выше комментариев и изучения документации по Java и всего остального кажется, что нет никакой разницы между «пользовательским классом» и «внутренним классом» с точки зрения того, как метаданные хранятся в permgen. Все эти метаданные отправляются в Permgen, когда этот класс загружается, и очищаются, как только они становятся недоступными.

person Ravi Ranjan    schedule 17.02.2016