JVM基礎之語法關鍵字的作用和原理(六)

2021-10-23 03:12:22 字數 529 閱讀 2983

1. new指令

new指令用於在記憶體中分配空間,並執行物件的構造方法。編譯後的位元組碼指令如下,建立新的物件的過程包括三個步驟。

// 建立新的demo物件

demo demo =

newdemo()

;// 經過編譯後的位元組碼

new// 在記憶體中分配空間

dup

invokespecial

>

// 執行構造方法

astore_1 // 把記憶體位址賦值給變數demo

2. static指令

3. final指令

4. volatile指令

記憶體屏障(memory barriers)禁止cpu在執行機器指令時將屏障後不符合規定的指令提前執行。

5. synchronized指令

synchronized指令將任意物件變為鎖,並且為了提高鎖的效能,將鎖優化為逐步公升級的鎖(偏向鎖、自旋鎖、阻塞)。

參考文章

指令重排序 - csdn

關鍵字 volatile關鍵字的作用

1.volatile關鍵字是防止在共享的空間發生讀取的錯誤。只保證其可見性,不保證原子性 使用volatile指每次從記憶體中讀取資料,而不是從編譯器優化後的快取中讀取資料,簡單來講就是防止編譯器優化。2.在單任務環境中,如果在兩次讀取變數之間不改變變數的值,編譯器就會發生優化,會將ram中的值賦值...

volatile關鍵字的作用

在c c 語言中經常會遇到volatile關鍵字,它的字面意思是 可變的 不穩定的 volatile 會影響編譯器編譯的結果,被volatile修飾的變數是隨時可能發生變化的,編譯器對volatile變數有關的運算,不進行編譯優化,以免出錯,vc 在產生release版可執行碼時會進行編譯優化,加v...

sealed關鍵字的作用

sealed關鍵字的作用 在類宣告中使用sealed可防止其它類繼承此類 在方法宣告中使用sealed修飾符可防止擴充類重寫此方法。sealed修飾符主要用於防止非有意的派生,但是它還能促使某些執行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的例項的虛函式成員的呼叫可以轉換為非虛擬...