Как определить размер отдельного конкретного определения класса (а не объекта)?В частности, сколько памяти PermGen использует данный класс?Если его невозможно рассчитать, насколько приблизительно он соответствует размеру файловой системы несжатого файла .class?
Я прочитал Джон Масамицу о том, что содержит PermGen:
- Основные поля класса Java
- Методы класса (включая байт-коды)
- Имена классов (в форме объекта, который также указывает на строку впостоянное поколение)
- Информация о постоянном пуле (все данные читаются из файла класса, см. главу 4 спецификации JVM).
- Массивы объектов и массивы типов, связанные с классом (например, массив объектов, содержащий ссылки на методы).
- Внутренние объекты, созданные JVM (например, java / lang / Object или java / lang / exception)
- Информация, используемая для оптимизациикомпиляторы (JIT)
Последние два, возможно, не имеют отношения к определению отдельного класса.Я заинтересован в остальном.
Единственное возможное приближение, которое я нашел, это java.lang.instrument.Instrument.getObjectSize (myObject.getClass ()); , но "некоторыеили все »в описании оставляет меня менее чем уверенным в точности.Есть идеи?Я чувствую, что пропускаю что-то простое.