jvm 物件在記憶體中儲存的布局有三部分:物件頭、例項資料、對齊填充。
1、物件頭:執行時資料、型別指標、陣列長度。
(1)執行時資料:hashcode雜湊碼、鎖狀態標誌、執行緒持有的鎖、gc年齡分代等,有些不是固定不變的,在執行時會根據當時的狀態進行修改。
(2)型別指標:指向方法區中型別資訊的指標。型別資訊就是編譯後的**以及其他關於這個類的資料資訊。
(3)陣列長度:如果物件是陣列,物件頭中還會存有陣列長度。如果不是陣列則沒有該資料。
2、例項資料:就是物件中各例項欄位的資料,物件的例項字段儲存的要麼是基本型別,要麼就是其他物件的引用。
3、對齊填充:jvm要求物件的記憶體占用大小必須是8位元組的整數倍,而物件頭與例項資料相加有些時候不一定是8位元組的整數倍,所以,對齊填充就是再填充一些特定標誌資料使得 物件頭+例項資料+填充資料 為8位元組的整數倍。
float在記憶體中儲存
浮點型變數在計算機記憶體中占用4位元組 byte 即32 bit。遵循ieee 754格式標準。乙個浮點數由2部分組成 底數m 和 指數e。mantissa 2exponent 注意,公式中的mantissa 和 exponent使用二進位制表示 底數部分 使用 進製數來表示此浮點數的實際值。指數部...
float在記憶體中儲存方式
依據ieee規定 float在儲存中都分為三個部分 符號位 sign 0代表正,1代表為負 指數字 exponent 用於儲存科學計數法中的指數資料,並且採用移位儲存 尾數部分 mantissa 尾數部分 其中floa和doublet的儲存方式如下圖所示 8.25用十進位制的科學計數法表示就為 8....
整數 浮點型在記憶體中儲存
1 整數在記憶體中的儲存 在計算機系統中,整數統一用補碼來表示和儲存。這裡普及一下 原碼 反碼 補碼 這三種表示方式均有符號位和數值為兩部分,符號位是首位用 0 表示 正數 用 1 表示 負數 原碼 直接將二進位制按照正負數的形式翻譯成二進位制就可以了。反碼 將原碼的符號位不變,其他位按位取反就可以...