Skip to content
内存是计算机中的重要原件,临时存储区域,作用是运行程序。
我们编写的程序是存放在硬盘中的,硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

**Java****虚拟机的内存划分**
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。


`**JVM****的内存划分:**`

|
|
**区域名称**

**作用**

寄存器

给CPU使用,和我们开发无关。

本地方法栈

JVM在使用操作系统功能的时候使用,和我们开发无关。

方法区

存储可以运行的class文件。

堆内存

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

方法栈

方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
**数组在内存中的存储**
**一个数组内存图**

public static void main(String[] args) \{
int[] arr = new int[3];
System.out.println(arr);//[I@5f150435
\}
 以上方法执行,输出的结果是`[I@5f150435`,这个是什么呢?是数组在内存中的地址。`new`出来的内容,都是在堆内存中存储的,而方法中的变量`arr`保存的是数组的地址。
**输出**`arr[0]`**,就会输出**`arr`**保存的内存地址中数组中**`0`**索引上的元素**


**两个数组内存图**

public static void main(String[] args) \{
int[] arr = new int[3];
int[] arr2 = new int[2];
System.out.println(arr);
System.out.println(arr2);
\}
 
**两个变量指向一个数组**

public static void main(String[] args) \{
//
定义数组,存储`3`个元素

int[] arr = new int[3];
//
数组索引进行赋值

arr[0] = 5; arr[1] = 6; arr[2] = 7;
//
输出`3`个索引上的元素值

System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//
定义数组变量`arr2`,将`arr`的地址赋值给

arr2
int[] arr2 = arr; arr2[1] = 9;
System.out.println(arr[1]);
\}

本站总访问 — 次