1. 程式人生 > >Java內存分配

Java內存分配

分配 不存在 exception 默認 arr new 存在 空指針異常 空閑

Java程序為了提高程序的效率,就對數據進行了不同的空間分配:

具體的劃分是如下的5個內存分配方式:

1.棧:存放的是局部變量

2.堆:存放的是所有new出來的東西

3.方法區:

4.本地方法區:(和系統相關)

5.寄存器:(CPU使用)

局部變量:在方法定義中或者方法聲明上的變量都稱為局部變量

堆內存的特點:

1.每一個new出來的東西都有地址值

2.每一個變量都有默認值

byte,short,int,long 為 0

float,double 為 0.0

char“\u0000”等同於空

引用類型 為 null

3.使用完畢就會變成垃圾,但是並沒有立即回收,會在垃圾回收器空閑的時候回收。

棧內存的特點:

數據離開作用域就釋放

數組名的值是地址,數組元素(即數組名[索引])的值是數組中存儲數據的值。

int[] arr3 = arr; //這是將arr的地址給了arr3,現在arr和arr3首地址相同。

ArrayIndexOutOfBoundsException:數組索引越界異常

原因:訪問了不存在的索引

NullPointerException:空指針異常

原因:數組名的值是null,不再指向地址值。而你還使用數組名訪問了它的元素。

數組屬性:length,用於獲取數組的長度。

格式:數組名.length

Java內存分配