暫存器,程式執行時自動分配
棧:棧存放的是:基本型別的物件和類的引用變數。每個執行緒都有乙個棧,棧內容私有,每個棧都有三個部分:基本型別變數區,執行環境上下文,操作指令區。棧的宣告和持有該棧的執行緒一樣長
堆:物件和資料都存放在這裡。堆的大小可以調節,在jvm載入讀取了類檔案之後,需要把類,方法,常變數存放在堆記憶體中,以便執行器執行,堆記憶體也分為三部分:新生代,年老代,永久代。堆儲存的全部是物件,每個物件包含乙個與之對應的class資訊。jvm只有乙個堆被所有的執行緒共享。
4和5、方法區:方法被所有的執行緒共享,存放所有欄位和方法的位元組碼,構造方法,介面**也是在這儲存。即:所有方法字 段 的 定義資訊都在這裡儲存。靜態變數+常量+類資訊+執行時常量池都存放在方法區中,方法區包含所有的class和static變 量,抽象的說:方法區村存放的是在整個程式中永遠唯一的元素(方法區包含靜態儲存區,和常量區)
6、非ram儲存:這裡的資料是完全存活與程式之外的,不受程式的任何控制。
精講:
java中變數的存放位置
成員變數 作為類的成員而存在,直接存在於類中。所有類的成員變 量可以通過this來引用。區域性變數 作為方法或語句塊的成員而存在,存在於方法的引數列表和方法定義中。1.成員變數可以被 public,protect,private,static等修飾符修飾,而 區域性變數不能被控制修飾符及 stati...
java中的基本資料型別存放位置
基本資料型別是放在棧中還是放在堆中,這取決於基本型別宣告的位置。一 在方法中宣告的變數,即該變數是區域性變數,每當程式呼叫方法時,系統都會為該方法建立乙個方法棧,其所在方法中宣告的變數就放在方法棧中,當方法結束系統會釋放方法棧,其對應在該方法中宣告的變數隨著棧的銷毀而結束,這就區域性變數只能在方法中...
Java中連線各種資料庫的方法
string driver com.mysql.jdbc.driver 驅動程式 string url jdbc mysql localhost 3306 db name 連線的url,db name為資料庫名 string username username 使用者名稱 string passwo...