- java内存分配:
栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
程序的主入口(main方法)开始执行时会进栈,代码执行完毕会出栈
堆:存储对象或者数组,new来创建的,都存储在堆内存
new出来的东西会在这块内存中开辟空间并产生地址
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候用,和我们开发无关
寄存器:给CPU使用,和我们开发无关
- 两个数组指向同一个空间的内存图:
public static void main(String[] args) {int[] arr1 = {11, 22};int[] arr2 = arr1;//arr1和arr2共用同一内存System.out.println(arr1[0]);System.out.println(arr2[0]);arr2[0] = 33;System.out.println(arr1[0]);System.out.println(arr2[0]);}
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了变化,那么其他数组再次访问的时候都是修改后的结果了