Встречается на собеседованиях • сегодня

Какие классы в Metaspace знаешь

Metaspace хранит метаданные классов, загруженных JVM. Основные типы данных:

  1. Class metadata — информация о классах (имя, методы, поля, аннотации)
  2. Constant Pool — пул констант класса
  3. Method metadata — байт-код, сигнатуры методов
  4. Annotations — метаданные аннотаций
  5. JIT-код — скомпилированный нативный код (в некоторых JVM)

Пример утечки в Metaspace:

java
public class MetaspaceLeak {
    static javassist.ClassPool cp = javassist.ClassPool.getDefault();
    
    public static void main(String[] args) throws Exception {
        for (int i = 0; ; i++) {
            Class<?> c = cp.makeClass("GeneratedClass" + i).toClass();
        }
    }
}

Здесь бесконечно генерируются классы, заполняя Metaspace. В отличие от PermGen, Metaspace по умолчанию динамически расширяется, но может упереться в лимиты ОС.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы