Где в памяти JVM хранятся статические методы?

«Где в памяти JVM хранятся статические методы?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статические методы хранятся в области метаданных класса (Method Area), которая в современных JVM (начиная с Java 8) называется Metaspace. Эта область содержит:

  • Байт-код всех методов класса.
  • Структуры данных, описывающие класс (имя, модификаторы, сигнатуры методов).
  • Константы времени выполнения (Runtime Constant Pool).

Пример класса:

public class MathUtils {
    public static int add(int a, int b) {
        return a + b;
    }
}

Байт-код метода add и его метаданные размещаются в Metaspace после загрузки класса MathUtils.

Важно: Статические переменные (не методы) хранятся в Heap, в специальной структуре, связанной с объектом класса Class.