- 程序:
public class Test {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,5};
System.out.println(arr);
}
}
- 第一步:当我们调用java Test ; 解析程序时,方法区会先加载Test.class文件,将Test文件加入方法区
- 第二部:将main方法调入进栈内存中去,在栈内存创建一个变量arr,而arr变量是数组的引用,因为数组是引用类型变量,new int[]{1,2,3,5},将会在堆内存中创建一个数组实例,arr将会保存的是堆内存的数组地址,该地址指向数组实例。
- 第三步:执行完main方法的代码后,栈将会弹出main方法,堆内存的数组实例会保存在堆内存中,如果没有变量引用,将会有jvm虚拟机进行回收内存,清除数组对象实例。而main方法中的变量,在方法执行完后,随着main方法的弹出了栈,里面保存的变量占用将会清空。