在Java中为数组分配的内存是哪里?
每次在程序中声明一个数组时,都会给它分配连续的内存。
阵列基址。第一个数组元素的地址被称为数组基址。每个元素都将占据容纳其类型值所需的内存空间,即;根据元素的数据类型,为每个元素分配1、4或8字节的内存。下一个内存地址被分配给数组中的下一个元素。这个内存分配过程一直持续到超过了数组元素的数量。
JVM的内存位置在讨论数组在Java中的存储位置问题之前,我们必须了解JVM(Java虚拟机)中的内存位置。它们是
- Java对象被存储在一个叫做堆的区域。堆是在JVM启动时创建的,在应用程序运行时可以增长或缩小。当堆里的东西填满时,垃圾就会被收集。在垃圾收集过程中,不再使用的对象被删除,为新对象腾出空间。
- 堆栈是一个(后进先出)的数据结构。它支持两个基本的操作,叫做推和弹。推操作将一个项目添加到堆栈的顶部,而弹操作将一个项目从堆栈的顶部移除。它充当了部分变量的存储器。
- 程序计数器(PC)寄存器**-**程序计数器(PC)寄存器在任何给定的时间都会跟踪当前正在执行的指令。它就像一个指向程序指令序列中当前指令的指针。
- 执行引擎 运行时引擎是Java虚拟机(JVM)的主要组成部分。它与JVM的不同内存区域进行通信。运行中的应用程序的每个线程都是虚拟机运行时的一个单独实例。
- 本机方法栈本机方法可以访问系统特定的功能和API,这些功能和API在Java中不能直接使用。Native Method是Java调用非Java代码的一个接口。Native Method是一种Java方法:该方法是用非Java语言实现的,比如C。
在Java中,数组的内存是在哪里分配的?
在Java中,内存被分配在Heap 中,用于数组。
在Java中,引用类型被存储在Heap区域。由于数组也是引用类型,(它们可以用"new "关键字创建),它们也被存储在Heap区域。数组被用来在一个变量中存储多个值,而不是为每个值单独声明变量。在Java中,数组存储原始值(int、char等)或对象的引用(即指针)。
单维数组。
int arr[] = new int[5]。
int[] arr只是对五个整数阵列的引用。如果你创建一个有50个整数的数组,也是一样的--分配一个数组并返回一个引用。
int intArray[]; //declaring array
intArray = new int[10]; // allocating memory to array
我们使用 new来分配一个数组,你必须指定要分配的元素的类型和数量。
对象数组。
在对象数组的情况下,数组的引用被存储在堆中。而数组元素本身也存储了对对象的引用。
类A{
. . .
}public class Ex{
public static void main(String[] args) {
A arr[] = new A[5]
}
}