🤔 Для чего нужна JVM?
Это виртуальная машина, которая обеспечивает выполнение программ, написанных на языке программирования Java. Основная роль JVM — это выполнение байт-кода Java, который является промежуточным представлением программ, компилируемых из исходного кода Java. JVM также предоставляет среду выполнения, включая управление памятью, сборку мусора, безопасность и многопоточность.
🚩Функции
🟠Платформонезависимость
Программы, написанные на Java, компилируются в байт-код, который не зависит от платформы. Этот байт-код может выполняться на любой системе, где установлена соответствующая JVM. Это означает, что один и тот же байт-код может выполняться на различных операционных системах и аппаратных платформах без изменений.
🟠Управление памятью
Управляет памятью через кучу (heap), где объекты динамически создаются и удаляются. Это освобождает разработчиков от необходимости вручную управлять памятью, снижая вероятность ошибок, связанных с неправильным использованием памяти, таких как утечки памяти.
🟠Сборка мусора (Garbage Collection)
Автоматически управляет освобождением памяти, используя сборщик мусора. Сборщик мусора периодически освобождает память, занятую объектами, которые больше не используются программой, что помогает предотвратить утечки памяти и улучшить производительность.
🟠Безопасность
Обеспечивает безопасное выполнение кода через систему управления доступом, которая проверяет разрешения при выполнении определенных операций (например, доступ к файловой системе). Это помогает предотвратить выполнение вредоносного кода.
🟠Многопоточность
Поддерживает многопоточность на уровне языка, что позволяет разработчикам создавать многопоточные программы с помощью встроенных механизмов Java. JVM обеспечивает управление потоками, их синхронизацию и выполнение.
🟠Управление исключениями
Предоставляет механизм обработки исключений, который позволяет программы Java надежно обрабатывать ошибки во время выполнения, повышая надежность и устойчивость приложений.
🚩Как работает
1⃣Компиляция исходного кода в байт-код
Исходный код Java (.java файлы) компилируется компилятором Java (javac) в байт-код (.class файлы), который является машинно-независимым промежуточным кодом.
2⃣Загрузка байт-кода
Класс-загрузчики (Class Loaders) JVM загружают байт-код в память. Существует несколько типов загрузчиков классов, такие как Bootstrap Class Loader, Extension Class Loader и Application Class Loader.
3⃣Проверка байт-кода
Выполняет проверку байт-кода для обеспечения его корректности и безопасности. Проверка включает проверку формата, доступности, ссылок и других аспектов, чтобы предотвратить выполнение некорректного или вредоносного кода.
4⃣Интерпретация или компиляция JIT
Может интерпретировать байт-код или использовать Just-In-Time (JIT) компиляцию для преобразования байт-кода в машинный код во время выполнения. JIT-компиляция улучшает производительность, так как позволяет часто исполняемым частям кода выполняться быстрее.
5⃣Выполнение кода
После загрузки, проверки и компиляции байт-кода JVM выполняет его, управляя памятью, потоками и исключениями, обеспечивая при этом безопасность выполнения.
Ставь 👍 и забирай 📚 Базу знаний
Post #710
3.4K
- 👍 16
- ❤ 1