За что отвечает JVM
JVM (Java Virtual Machine) — это виртуальная машина, предоставляющая среду выполнения для управления Java-кодом и приложениями. Она загружает, проверяет и исполняет байт-код, управляет памятью и выполняет сборку мусора.
Аналогия из жизни: JVM — это как универсальный переводчик-синхронист. Программист пишет код на Java, компилятор превращает его в байт-код (промежуточный язык), а JVM на каждой конкретной ОС переводит этот байт-код в понятные данной системе инструкции. Благодаря этому один и тот же .class файл работает на Windows, Linux и macOS.
Основные обязанности JVM
- Загрузка, проверка и исполнение байт-кода
- Предоставление среды выполнения для байт-кода
- Управление памятью и сборка мусора (Garbage Collection)
JVM является независимой оболочкой исполнения кода, благодаря которой возможен запуск на любой ОС без влияния ОС на выполняемую программу.
Типы данных JVM
JVM работает с двумя категориями данных: примитивные типы (primitive types) и ссылочные типы (reference types).
Примитивы: JVM по сути является 32-битной машиной. Типы long и double (64-битные) занимают две единицы памяти в локальных переменных фрейма или стеке операндов, поскольку каждая единица составляет 32 бита. Типы boolean, byte, short и char расширяются до 32-разрядных целых чисел и работают как int. Значение boolean работает как 8-битное byte, где 0 представляет false, а 1 — true.
Ссылочные типы делятся на три вида: типы классов, типы массивов и типы интерфейсов. Их значения являются ссылками на динамически создаваемые экземпляры классов, массивы или экземпляры классов, реализующих интерфейсы.
На собеседовании: достаточно сказать, что JVM отвечает за загрузку и исполнение байт-кода, управление памятью и GC, а также обеспечивает кроссплатформенность (Write Once, Run Anywhere). Если спрашивают глубже, упомяните, что JVM — 32-битная машина, а
long/doubleзанимают два слота.