內存結構:
Java程序在運行時,需要在內存中分配空間,爲了提高運算效率,有對空間進行了不同區域的劃分,因爲每一片區域都有特定的處理數據方式和內存管理方式
共分配了5塊區域,每區域中處理方式不同
棧內存、堆內存、 方法區、本地方法區、寄存器
棧內存:
- 用於存儲局部變量
- 當數據使用完,所佔空間會自動釋放
例如:
int a = 5;
int b = a;
b = 8;
堆內存
用於存放數組和對象,通過new建立的實例都存放在堆內存中
情景:分析數組如何存放在內存中
int [] a = new int[3]
例如:
int[] a = new int[3]
int[] b = a;
b[1] = 89;
a[1] = 98;
a = null;
問:此時有沒有垃圾數據,答:沒有,a的引用沒有指向了,但是b的還在使用,所以沒有垃圾數據
例如:
int[] a = new int[3]
int[] b = new int[3]
只要是new了就會開闢新的內存
總結
- 數組和對象,通過new建立的實例都存放在堆內存中
- 每個實體都有內存地制值
- 實體中的變量都有默認初始化值
- 當實體=null時,實體不在被使用,會在不確定的時間內被垃圾回收器回收