Каждый раз, когда в программе объявляется массив, ему выделяется непрерывная память.
Базовый адрес массива: адрес первого элемента массива называется базовым адресом массива. Каждый элемент будет занимать место в памяти, необходимое для размещения значений его типа, т.е. в зависимости от типа данных элементов для каждого элемента выделяется 1, 4 или 8 байтов памяти. Следующий адрес памяти назначается следующему элементу в массиве. Этот процесс выделения памяти продолжается до тех пор, пока не будет превышено количество элементов массива.
Ячейки памяти JVM. Прежде чем перейти к вопросу о том, где в Java хранится массив, мы должны знать о ячейках памяти в JVM (виртуальная машина Java). Они есть:
- Heap — объекты Java хранятся в области, называемой кучей. Куча создается при запуске JVM и может увеличиваться или уменьшаться во время работы приложения. Когда груды кучи заполняются, отходы собираются. Во время сборки мусора объекты, которые больше не используются, удаляются, освобождая место для новых объектов.
- Stack — это структура данных (последним пришел — первым вышел). Он поддерживает две основные операции, называемые push и pop. Операция push добавляет элемент на вершину стека, а операция pop удаляет элемент с вершины стека. Он действует как хранилище частичной переменной.
- PC Registers — регистр счетчика программ (ПК) отслеживает текущую инструкцию, выполняемую в любой момент времени. Это похоже на указатель на текущую инструкцию в последовательности инструкций программы.
- Execution Engine — механизм выполнения является основным компонентом виртуальной машины Java (JVM). Он взаимодействует с различными областями памяти JVM. Каждый поток запущенного приложения — это отдельный экземпляр среды выполнения виртуальной машины.
- Native Method Stack. Собственные методы могут получать доступ к специфичным для системы функциям и API, которые недоступны непосредственно в Java. Собственный метод — это интерфейс для Java для вызова кода, отличного от Java. Собственный метод — это метод Java: метод реализован на языке, отличном от Java, таком как C.
Где выделяется память для массива в Java?
Memory is allocated in Heap are for the Array in Java.
В Java ссылочные типы хранятся в области кучи. Поскольку массивы также являются ссылочными типами (их можно создать с помощью ключевого слова «new» ), они также хранятся в области кучи. Массивы используются для хранения нескольких значений в одной переменной вместо объявления отдельных переменных для каждого значения. В Java в массиве хранятся примитивные значения (int, char и т.д.) или ссылки (т.е. указатели) на объекты.
Одномерный массив:
int arr[] = new int[5];
int[] arr — это просто ссылка на массив из пяти целых чисел. Если вы создаете массив с 50 целыми числами, то же самое — выделяется массив и возвращается ссылка.
int intArray[]; //declaring array
intArray = new int[10]; // allocating memory to array
Мы используем new для выделения массива, вы должны указать тип и количество элементов для выделения.
Массив объектов:
В случае массива объектов ссылка на массив хранится в куче. И сами элементы массива тоже хранят ссылку на объекты.
class A{
. . .
}public class Ex{
public static void main(String[] args) {
A arr[] = new A[5]
}
}