虛擬機器記憶體區常用名詞

2021-09-11 05:29:48 字數 818 閱讀 2855

棧幀是用來儲存資料和部分結果,以及執行動態鏈結、方法返回值和異常資訊的。

每次方法的呼叫都會生成乙個棧幀,然後將該棧幀進行壓棧。當方法結束後,該棧幀將會出棧、被銷毀。

無論是正常結束還是異常結束。

每個棧幀都是自己的區域性變數表、運算元棧、以及對當前方法類的執行時常量池的引用。

由當前執行緒建立的幀不能被其它執行緒引用。

區域性變數(local variables):
每個棧幀包含乙個叫區域性變數的變數陣列,它的長度在編譯的時候確定。

單個區域性變數可以儲存型別的值boolean,byte,char,short,int, float,reference,或returnaddress。一對區域性變數可以包含型別long或值double。

虛擬機器使用區域性變數在方法呼叫上傳遞引數。

例如:當前棧幀中只有 int i = 3; 它就只佔乙個區域性變數。

運算元棧(operand stacks)
每個幀包含乙個(lifo)後進先出的棧、稱為運算元棧、棧的最大深度在編譯時候確定。

虛擬機器指令將區域性變數或者常量值壓棧到運算元棧中、其它虛擬機器指令取出它們,最它們進行操作、將結果再壓棧到運算元棧中。

例如:字尾表示式求值

1 * 2 + 3 寫成字尾表示式就是 1 2 * 3 +

1 先入棧 2 再入棧 當到*號時、彈出1、2進行乘操作 將結果2壓棧

然後3再壓棧 當到+時、將3、2彈棧、計算結果為5再壓棧

動態鏈結(dynamic linking)
每個棧幀都包含對執行時常量池的引用,

虛擬機器記憶體

xmx10240m 代表最大堆 xms10240m 代表最小堆 xmn5120m 代表新生代 xxsurvivorratio 3 代表eden survivor 3 根據generation collection演算法 目前大部分jvm採用的演算法 一般根據物件的生存週期將堆記憶體分為若干不同的區域...

設定虛擬機器記憶體

記憶體 虛擬機器程序執行在記憶體裡,所以它對記憶體的讀寫操作不需要通過實際作業系統,而增加記憶體空間的操作肯定還需要實際作業系統。硬碟 虛擬機器程序不佔據硬碟 理論上不占用,但是如果實際作業系統使用了虛擬記憶體的話,還是會使用硬碟交換 只是虛擬機器硬碟在實際硬碟占用了空間,虛擬機器作業系統對虛擬機器...

擴充套件虛擬機器記憶體

虛擬機器設定記憶體擴充套件大小 檢視 sda 空間是否變化,擴充套件的空間在 sda 中 lsblk 檢視當前檔案系統資訊,包括容量大小 使用情況 掛載點等 df h 檢視當前的磁碟分割槽資訊 主要是分割槽表資訊 fdisk l 將 sda 中擴充套件的空間進行分割槽 一般為sda3 對磁碟 dev...