Память в JVM. Stack. Heap. Metaspace
Основные особенности стека
Heap
Основные свойства
Metaspace
1.17M
Category: programmingprogramming

Введение в Java

1.

Введение в Java

2.

Что такое JAVA
Java
объектно-ориентированный
язык
программирования, разработанный компанией Sun
Microsystems.
2

3.

JVM – Java Virtual Machine
Java Virtual Machine –
ключевой компонент
платформы Java
3

4.

JDK – Java Development Kit
Java Development Kit (Open JDK) - бесплатно
распространяемый комплект разработчика
приложений на языке Java, включающий в
себя компилятор Java (javac), стандартные
библиотеки
классов
Java,
примеры,
документацию, различные утилиты и
исполнительную систему Java (JRE).
4

5.

Oracle JDK
Java Development Kit (Open JDK) - бесплатно
распространяемый комплект разработчика
приложений на языке Java, включающий в
себя компилятор Java (javac), стандартные
библиотеки
классов
Java,
примеры,
документацию, различные утилиты и
исполнительную систему Java (JRE).
5

6.

JRE – Java Runtime Environment
Java Runtime Environment - минимальная
реализация
виртуальной
машины,
необходимая
для
исполнения
Javaприложений.
Состоит из виртуальной машины - Java Virtual
Machine (JVM) и библиотеки Java-классов.
6

7.

Установка Java – часть 1
Открыть командную строку.
(Пуск -> Выполнить -> "cmd.exe")
Написать в консоле "java –version”
Смотреть что получилось
7

8.

Установка Java – часть 2
1. Скачиваем с сайта https://jdk.java.net/11/
2. Предыдущие версии по ссылке:
https://jdk.java.net/archive/
2. Скачивание в формате ZIP, который затем
распаковываем в C:\java\jdk-11.0.2
8

9.

Установка Java – часть 3
Устанавливаем системные переменные среды:
Зайти в “Мой компьютер” -> “Свойства” ->
“Дополнительно” -> “Переменные среды”
Добавить переменную JAVA_HOME = “путь куда
установили JDK” (на пример, C:\java\jdk-11.0.2)
Отредактировать PATH, добавив “;%JAVA_HOME%\bin”
Пример для cmd.exe:
> set PATH=%PATH%;C:\java\jdk-11.0.2\bin
9

10.

Жизненный цикл java программы – Часть 1
Файл с исходным кодом, текстовый формат, c
расширением *.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
10

11.

Жизненный цикл java программы – Часть 2
Компилятор (javac)
Команда:
>javac Hello.java
11

12.

Жизненный цикл java программы – Часть 3
Байт-код Java — набор инструкций,
исполняемых JVM.
Hello.class – результат работы компилятора
12

13.

Жизненный цикл java программы – Часть 4
Интерпретатор java (JVM)
Команда:
> java.exe Hello
13

14. Память в JVM. Stack. Heap. Metaspace

Stack
Стек работает по схеме LIFO (последним вошел, первым вышел). Всякий раз, когда
вызывается новый метод, содержащий примитивные значения или ссылки
на объекты, то на вершине стека под них выделяется блок памяти.
Когда метод завершает выполнение, блок памяти (frame), отведенный для его
нужд, очищается, и пространство становится доступным для следующего метода.
При этом поток выполнения программы возвращается к месту вызова этого метода
с последующим переходом к следующей строке кода.
UX/UI DEVELOPMENT - 001

15. Основные особенности стека

•Он заполняется и освобождается по мере вызова и завершения
новых методов
•Переменные в стеке существуют до тех пор, пока выполняется метод
в котором они были созданы
•Если память стека будет заполнена, Java бросит исключение
java.lang.StackOverFlowError
•Доступ к этой области памяти осуществляется быстрее, чем к куче
•Является потокобезопасным, поскольку для каждого потока
создается свой отдельный стек
UX/UI DEVELOPMENT - 001

16. Heap

UX/UI DEVELOPMENT - 001

17. Основные свойства

Java Heap (куча) используется Java Runtime для выделения
памяти под объекты и JRE классы.
Создание нового объекта также происходит в куче.
Здесь работает сборщик мусора: освобождает память путем
удаления объектов, на которые нет каких-либо ссылок.
Любой объект, созданный в куче, имеет глобальный доступ и на
него могут ссылаться с любой части приложения.
UX/UI DEVELOPMENT - 001

18. Metaspace

Metaspace – новая область памяти, появившаяся в 8
версии Java и заменившая устаревшую PermGen.
Основное их отличие заключается в способе
распределения памяти.
Metaspace хранит в себе описание классов,
статические переменные и методы
В результате появления Metaspace, процесс очистки
памяти получил некоторые преимущества. Теперь
сборщик мусора автоматически удаляет из памяти
ненужные классы, когда емкость, выделенная для
хранения метаданных, достигает максимального
значения. Вместе с этим, уменьшилась вероятность
получения ошибки OutOfMemoryError.
UX/UI DEVELOPMENT - 001

19.

Спасибо за внимание
19
English     Русский Rules