java內存分配堆和棧
java程序劃分5個內存空間
棧:存放的是局部變量 分爲虛擬機棧和方法棧
StackOverflowError 棧溢出 線程請求的棧深度大於虛擬機所允許的深度
大部分虛擬機允許動態擴展
OutOfMemoryError 擴展時無法申請到足夠多的內存
堆:存在的是所有new出來的東西
方法區:
本地方法區:和操作系統有關
寄存器:CPU使用
堆內存的特點:
1 每個new出來的東西都有地址值
2 每個變量都有默認值
byte short int long 0
float double 0.0
char '\u0000'
boolean false
所有引用類型 null
3 使用完畢就變成垃圾,但是並沒用立即回收
類執行順序
靜態代碼塊>代碼塊>構造方法
多態 父類 =new 子類()
成員變量 編譯看左邊,運行看左邊
成員方法 因爲有方法重寫覆蓋 編譯看左邊,運行看右邊 也就是該方法 父類子類都有,子類重寫了
靜態方法 與類有關,編譯看左邊,運行看左邊
棧:存放的是局部變量 分爲虛擬機棧和方法棧
StackOverflowError 棧溢出 線程請求的棧深度大於虛擬機所允許的深度
大部分虛擬機允許動態擴展
OutOfMemoryError 擴展時無法申請到足夠多的內存
堆:存在的是所有new出來的東西
方法區:
本地方法區:和操作系統有關
寄存器:CPU使用
堆內存的特點:
1 每個new出來的東西都有地址值
2 每個變量都有默認值
byte short int long 0
float double 0.0
char '\u0000'
boolean false
所有引用類型 null
3 使用完畢就變成垃圾,但是並沒用立即回收
類執行順序
靜態代碼塊>代碼塊>構造方法
多態 父類 =new 子類()
成員變量 編譯看左邊,運行看左邊
成員方法 因爲有方法重寫覆蓋 編譯看左邊,運行看右邊 也就是該方法 父類子類都有,子類重寫了
靜態方法 與類有關,編譯看左邊,運行看左邊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.