代码段
Scanner sc=new Scanner(System.in);
System.out.println("enter size of array");
int size=sc.nextInt();
int[] arr=new int[size];//Is the array arr allocated on heap?
是否有一些称为数组的动态内存分配?
答案 0 :(得分:1)
int[] arr=new int[size];//Is the array arr allocated on heap?
请注意,没有“数组arr
”。
有一个数组 - 它必然在堆上,因为数组是对象,并且所有Java对象都驻留在堆上 - 并且存在对它的引用,arr
,它驻留在堆栈上,因为这是一个局部变量。
答案 1 :(得分:0)
Java对象驻留在称为堆的区域中。 新构造的对象首先分配在称为 eden 的堆区域中。
堆栈包含对象的引用和当前方法范围的基元类型的值:
当我们创建一个基本类型的数组时,它是在堆内存中创建的,堆栈内存包含它的引用。