淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式-創(chuàng)新互聯(lián)

自Java 6/Java 7開始,Java虛擬機(jī)對內(nèi)部鎖的實(shí)現(xiàn)進(jìn)行了一些優(yōu)化。這些優(yōu)化主要包括鎖消除(Lock Elision)、鎖粗化(Lock Coarsening)、偏向鎖(Biased Locking)以及適應(yīng)性鎖(Adaptive Locking)。這些優(yōu)化僅在Java虛擬機(jī)server模式下起作用(即運(yùn)行Java程序時(shí)我們可能需要在命令行中指定Java虛擬機(jī)參數(shù)“-server”以開啟這些優(yōu)化)。

在羅甸等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,羅甸網(wǎng)站建設(shè)費(fèi)用合理。

1 鎖消除

鎖消除(Lock Elision)是JIT編譯器對內(nèi)部鎖的具體實(shí)現(xiàn)所做的一種優(yōu)化。

淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式

鎖消除(Lock Elision)示意圖

在動態(tài)編譯同步塊的時(shí)候,JIT編譯器可以借助一種被稱為逃逸分析(Escape Analysis)的技術(shù)來判斷同步塊所使用的鎖對象是否只能夠被一個(gè)線程訪問而沒有被發(fā)布到其他線程。如果同步塊所使用的鎖對象通過這種分析被證實(shí)只能夠被一個(gè)線程訪問,那么JIT編譯器在編譯這個(gè)同步塊的時(shí)候并不生成synchronized所表示的鎖的申請與釋放對應(yīng)的機(jī)器碼,而僅生成原臨界區(qū)代碼對應(yīng)的機(jī)器碼,這就造成了被動態(tài)編譯的字節(jié)碼就像是不包含monitorenter(申請鎖)和monitorexit(釋放鎖)這兩個(gè)字節(jié)碼指令一樣,即消除了鎖的使用。這種編譯器優(yōu)化就被稱為鎖消除(Lock Elision),它使得特定情況下我們可以完全消除鎖的開銷。

Java標(biāo)準(zhǔn)庫中的有些類(比如StringBuffer)雖然是線程安全的,但是在實(shí)際使用中我們往往不在多個(gè)線程間共享這些類的實(shí)例。而這些類在實(shí)現(xiàn)線程安全的時(shí)候往往借助于內(nèi)部鎖。因此,這些類是鎖消除優(yōu)化的常見目標(biāo)。

清單12-1  可進(jìn)行鎖消除優(yōu)化的示例代碼


public class LockElisionExample {

 public static String toJSON(ProductInfo productInfo) {
  StringBuffer sbf = new StringBuffer();
  sbf.append("{\"productID\":\"").append(productInfo.productID);
  sbf.append("\",\"categoryID\":\"").append(productInfo.categoryID);
  sbf.append("\",\"rank\":").append(productInfo.rank);
  sbf.append(",\"inventory\":").append(productInfo.inventory);
  sbf.append('}');

  return sbf.toString();
 }
}

網(wǎng)頁名稱:淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://muchs.cn/article28/dhodjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、全網(wǎng)營銷推廣、動態(tài)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、企業(yè)建站標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司