今天開始學java(七)關於內存劃分

java的內存需要化身成爲五個部分:
1、棧內存:存放的都是方法中的局部變量。方法的運行一定是在棧當中
局部變量:方法的參數,或者是方法{}內部的變量
作用域:一旦超出作用域,立刻從棧內消失。
2、堆內存:凡是new出來的東西,都在堆當中
堆內存裏面的東西都是一個地址值:16進制
堆內存中的數據都有默認值,規則:
如果是整數 默認爲0
如果是浮點數 默認爲0.0
如果是字符 默認爲‘/u0000’
如果是布爾值 默認爲false
如果是引用類型 默認爲null
3、方法區:存儲.class相關信息,包含方法的信息。
4、本地方法棧:與操作系統相關
5、寄存器:與CPU相關

舉一個例子:
在這裏插入圖片描述方法區中.class最爲主要保存的就是方法的信息,原方不動的把方法的第一行,放到方法區中
作爲main方法,爲程序的起點,首先在方法區中看看是什麼方法,然後把方法信息加載到棧內存當中,並且爲main方法在棧內存當中開闢一塊內存空間,這個動作叫進入棧內存,main方法進入之後會有一個專屬的方框,回頭看圖片中的代碼,在main方法中,第一行是聲明瞭一個array數組,這個數組就是一個局部變量,變量可以是基本類型也可以是引用類型。
而賦值之後的new是在堆內存當中,數組長度爲3,索引編號爲0,1,2,默認值都爲0,地址值爲十六進制0x什麼什麼(假如是0x666),而這個0x666就會被賦值放到array名稱當中,就是說new的數組在堆當中,而地址名稱是在棧當中的,棧中存儲的是地址值,根據地址值就可以找到堆中的數組。
所以在這裏直接輸入array,輸出的就是地址值,而訪問元素時輸出的就是數組中的元素所對應的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章