二 HotSPot虛擬機器物件探秘

2021-08-08 08:22:04 字數 695 閱讀 6754

當虛擬機器遇到一條含有new的指令時,會進行一系列物件建立的操作:

檢查常量池中是否有要建立的這個物件所屬類的符號引用;

檢查這個符號引用所代表的類是否已經被jvm載入

根據方法區中該類的資訊確定該類所需的記憶體大小

乙個物件所需的記憶體大小是在這個物件所屬類被定義完就能確定的!且乙個類所生產的所有物件的記憶體大小是一樣的!jvm在乙個類被載入進方法區的時候就知道該類生產的每乙個物件所需要的記憶體大小

從堆中劃分一塊對應大小的記憶體空間給新的物件,分配堆中記憶體有兩種方式:

設定物件頭(object header)

呼叫物件的建構函式進行初始化

此時,整個物件的建立過程就完成了.

乙個物件從邏輯角度看,它由成員變數和成員函式構成,從物理角度來看,物件是儲存在堆中的一串二進位制數,這串二進位制數的組織結構如下.

物件在記憶體中儲存的布局分三部分:

例項資料

例項資料部分就是程式定義的各種欄位的內容,包含父類和子類的都會記錄下來.

對齊填充(並非必然存在,無特別含義,僅起佔位符作用)

hotspot要求物件的大小必須是8位元組的整數倍.

由於物件起始位址必須是8位元組的整數倍,但例項資料部分的長度是任意的,因此需要對齊補充字段確保整個物件的總長度為8的整數倍.

棧上的reference資料存放的是乙個位址,那麼根據位址型別的不同,物件有不同的訪問方式

安裝虛擬機器二 安裝虛擬機器

安裝軟體 vmware 10 centos 6.5 x86 64 minimal.iso 安裝步驟 第一步 第二步 安裝首介面 選擇第乙個 第三步 跳過磁碟掃瞄 第四步 點選 next 第五步 語言選擇english 第六步 設定鍵盤型別 第七步 儲存設定 第八步 清空虛擬磁碟 第九步 設定主機名 ...

virtualbox虛擬機器 虛擬機器的網路

今天要測試ip多宿主 ip multihoming 即host和guest的兩個網絡卡分別接,host ping guest的ipv6不通。解決過程如下 命令輸出 ip addr 1 lo mtu 65536 qdisc noqueue state unknown link loopback 00 ...

debian虛擬機器安裝kvm虛擬機器

一 概念介紹 1 libvirt是linux上的虛擬化庫,是長期穩定的c語言api,支援kvm qemu xen lxc等主流虛擬化方案。virsh是libvirt對應的shell命令。2 kvm,即kernel basedvirtual machine的簡稱,是乙個開源的系統虛擬化模組,自linu...