Java内存分配

  1. 栈:方法运行时使用的内存,比如main方法运行,进入方法栈中运行。

  2. 堆:存储对象或者数组,new来创建的,都存储在堆内存。

  3. 方法区:存储可以运行的class文件

  4. 本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关。

  5. 寄存器:给CPU使用,和我们开发无关。

总结:

  1. 只要是new出来的,一定是在堆里面开辟了一个小空间

  2. 如果new了多次,那么在堆里面有多个小空间,每个小空间都有各自的数据

两个数组指向同一个空间的内存图。

public static void main(string[] args){
int[] arr1 = {11,22};
int[] arr2 = arr1;
sout(arr1[0]);
sout(arr2[0]);
}

结论:

当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了。