jvm晚期優化

2021-08-22 06:04:47 字數 735 閱讀 5953

最具代表性的幾個優化技術

公共子表示式消除

描述 如果乙個表示式e已經計算過了,並且從先前的計算到現在e中的所有變數的值都沒有發生變化,那麼e的這次出現就成為了公共子表示式

int d = ( c * b ) * 12 + a + ( a + b * c );

優化為int d = e * 12 + a + ( a + e );

優化為int d = e * 13 + a * 2

陣列泛微檢查消除
描述 對於虛擬機器的執行子系統來說,每次進行陣列元素的讀寫都會帶著一次隱含的條件判斷,對於擁有大量陣列訪問的程式**,這無疑是一種效能負擔

如果編譯器只要通過資料流分析就可以判定迴圈變數的取值範圍一定不會超出陣列的範圍,

那麼整個迴圈中就可以把陣列的上下界檢查消除,節省很多次的條件判斷操作

方法內聯
方法內聯的優化看起來非常簡單,不過是吧目標方法的**「複製」到發起呼叫的方法之中,避免發生真實方法的呼叫

逃逸分析
描述 逃逸分析並不是直接優化**的手段,而是為其他優化手段提供依據的分析技術

1、棧上分配

2、同步消除

3、標量替換

JVM 效能優化

最近發現服務cpu消耗不是很穩定,在150 600 之間不停跳動,以前沒有這種情況,check了一下,是old區記憶體不太夠導致每隔一小段時間cms gc了,old區記憶體不夠的主要原因是服務需要載入的資料變多了,使得old區頻繁gc 用 jmap heap pid 可以看到當old區佔比超過92 ...

jvm引數優化

堆記憶體優化 調整jvm啟動引數 xms xmx xx newsize xx maxnewsize,如調整初始堆記憶體和最大對記憶體 xms256m xmx512m。或者調整初始new generation的初始記憶體和最大記憶體 xx newsize 128m xx maxnewsize 128m...

JVM編譯優化

參考文章 整體描述 標量替換 虛擬機會用即時編譯器把執行頻繁的熱點 變成機器碼,並做相應優化。1 直譯器和編譯器的優點 直譯器優點 程式啟動快,占用記憶體小,編譯失敗時還能逆優化恢復到解析狀態 編譯器優點 執行時可探測熱點 並把位元組碼編譯成本地機器碼,這樣程式執行效率更高 2 在什麼情況下才會被判...