Gymterview
junior

За что отвечает 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 занимают два слота.