1. 程式人生 > >java 偏向鎖優化技術

java 偏向鎖優化技術

1.簡介

這是jvm的多執行緒優化技術.
偏向鎖,它會偏向於第一個訪問該鎖的執行緒. 如果在接下來的執行過程中,該鎖沒有被其他的執行緒訪問,則持有偏向鎖的執行緒將永遠不需要觸發同步。
如果在執行過程中,遇到了其他執行緒搶佔該鎖,則持有偏向鎖的執行緒會被掛起,JVM會嘗試消除它身上的偏向鎖,將鎖恢復到標準的輕量級鎖。

2.消除偏向鎖

如果一個鎖只被單執行緒用到, 那麼偏向鎖的優化是有意義的. 如果自己確定自己的程式碼, 很多鎖就是多執行緒用, 那可以禁用偏向鎖這個優化, 從而提升程式碼效能.
在JDK 6以後,預設已經開啟了偏向鎖這個優化,通過JVM 引數 -XX:-UseBiasedLocking

來禁用偏向鎖.

相關推薦

java 偏向優化技術

1.簡介 這是jvm的多執行緒優化技術. 偏向鎖,它會偏向於第一個訪問該鎖的執行緒. 如果在接下來的執行過程中,該鎖沒有被其他的執行緒訪問,則持有偏向鎖的執行緒將永遠不需要觸發同步。 如果在執行過程中,遇到了其他執行緒搶佔該鎖,則持有偏向鎖的執行緒會被掛起

深入理解多執行緒(五)—— Java虛擬機器的優化技術

本文是《深入理解多執行緒》的第五篇文章,前面幾篇文章中我們從synchronized的實現原理開始,一直介紹到了Monitor的實現原理。 前情提要 通過前面幾篇文章,我們已經知道: 1、同步方法通過ACC_SYNCHRONIZED關鍵字隱式的對方法進行加鎖。當執行緒要

java同步優化方案學習筆記(偏向,輕量級,自旋,重量級

目錄 一,概述 二,CAS 一,概述 什麼是java的鎖? 為什麼java要有鎖? java的鎖為什麼需要優化? 怎麼優化的? 1,java中使用synchronized關鍵字來實現同步功能,被synchronized修飾的方法

java 偏向、輕量級及重量級synchronized原理

bubuko 固定 使用情況 防止 不能 image 過程 記錄 原因 Java對象頭與Monitor java對象頭是實現synchronized的鎖對象的基礎,synchronized使用的鎖對象是存儲在Java對象頭裏的。 對象頭包含兩部分:Mark Word 和

Java偏向\輕量級\重量級總結

  資源消耗 目的 場景 實現方式 偏向鎖 一個執行緒只有一次CAS 單執行緒進行同步塊時,消除輕量級鎖的CAS操作。 大多數場景為單執

【轉】Java -- 偏向、輕量級、自旋、重量級

之前做過一個測試,詳情見這篇文章《多執行緒 +1操作的幾種實現方式,及效率對比》,當時對這個測試結果很疑惑,反覆執行過多次,發現結果是一樣的:  1. 單執行緒下synchronized效率最高(當時感覺它的效率應該是最差才對);  2. AtomicInteger效率最不穩定,

Java--偏向/輕量級/重量級

首先要解釋清楚這幾種鎖的特徵和區別,以及執行時候的變化,需要了解Java物件頭的一些知識,在Java物件頭的Mark Word內就記錄著這些不同鎖的狀態位。另外偏向鎖---輕量級鎖---重量級鎖本文都需要依託synchronize進行理解和分析。另外也要參照網路上很多的資料。

HotSpot中的幾種優化技術

在JDK 1.6中,HotSpot虛擬機器實現不少鎖優化技術來提高程式的執行效率。 自旋鎖 自旋鎖可以使執行緒在沒有取得鎖的時候不被掛起,而轉去執行一個空迴圈。這樣可以避免執行緒切換的開銷,在鎖被佔用時間很短時對效能有所提高。反之,如果鎖佔用時間過長,那麼自旋的執行緒只會

深入理解JVM(③)Java優化

## 前言 從JDK5到JDK6HotSpot虛擬機器開發團隊花費了大量的資源實現了各種鎖優化技術,如**適應性自旋(Adaptive Spinning)**、**鎖消除(Lock Elimination)**、**鎖膨脹(Lock Coarsening)**、**輕量級鎖(LightEight Lockin

Java併發程式設計:Synchronized底層優化偏向、輕量級Java併發程式設計:Synchronized底層優化偏向、輕量級

轉自:https://www.cnblogs.com/paddix/p/5405678.html Java併發程式設計:Synchronized底層優化(偏向鎖、輕量級鎖)   Java併發程式設計系列: J

Java多執行緒優化偏向原理分析

本文來自Ken Wu's Blog,原文標題:《Java偏向鎖實現原理(Biased Locking)》 閱讀本文的讀者,需要對Java輕量級鎖有一定的瞭解,知道lock record, mark word之類的名詞。 Java偏向鎖(Biased Locking)是

Java併發程式設計:Synchronized底層優化偏向、輕量級

Java併發程式設計系列: 一、重量級鎖   上篇文章中向大家介紹了Synchronized的用法及其實現的原理。現在我們應該知道,Synchronized是通過物件內部的一個叫做監視器鎖(monitor)來實現的。但是監視器鎖本質又是依賴於底層的作業系統的Mutex Lock來實現的。而

Java併發——Synchronized優化(輕量級偏向

1 重量級鎖 在上一篇部落格中我們知道,Synchronized的實現依賴於與某個物件向關聯的monitor(監視器)實現,而monitor是基於底層作業系統的Mutex Lock實現的,而基於Mutex Lock實現的同步必須經歷從使用者態到核心態的轉換,這

深入理解java虛擬機7---線程安全 & 優化

err iou nan gpa egg aik risl cpn hang python%E5%AD%A6%E4%B9%A0%20%20%20%20%20%E5%8F%98%E9%87%8F%E7%9A%84%E6%93%8D%E4%BD%9C%20%E4%B8%8E%20

java多線程編程——優化

zed str 得到 obj java開發框架 使用方法 這也 star 多個 並發環境下進行編程時,需要使用鎖機制來同步多線程間的操作,保證共享資源的互斥訪問。加鎖會帶來性能上的損壞,似乎是眾所周知的事情。然而,加鎖本身不會帶來多少的性能消耗,性能主要是在線程的獲取鎖的過

Java並發編程:synchronized和優化

section ext 隨著 32bit 就是 -i 序列 UC 進行 每天學習一點點 編程PDF電子書、視頻教程免費下載:http://www.shitanlife.com/code 1. 使用方法 synchronized 是 java 中最常用的保證線程安全的方式,s

Java---偏向、輕量級、自旋、重量級

center jdk1 startup 例如 單元 cati 保護 讀鎖 text 之前做過一個測試,反復執行過多次,發現結果是一樣的: 1. 單線程下synchronized效率最高(當時感覺它的效率應該是最差才對); 2. AtomicInteger效率最不穩定,不同並

Java並發編程學習:線程安全與優化

內部 高級功能 java並發編程 9.png runnable finally 虛擬 min roman 本文參考《深入理解java虛擬機第二版》 一。什麽是線程安全? 這裏我借《Java Concurrency In Practice》裏面的話:當多個線程訪問一

Java優化思路及JVM實現

應用 num nal 高性能 thread collect 傳統 有一個 test 1. 鎖優化的思路和方法 這裏提到的鎖優化,是指在阻塞式的情況下,如何讓性能不要變得太差。但是再怎麽優化,一般來說性能都會比無鎖的情況差一點。 這裏要註意的是,在ReentrantLock中

Java 虛擬機對優化所做的努力

ogr 表示 最有 分享圖片 mage cap 內部 操作系統 在線 作為一款公用平臺,JDK 本身也為並發程序的性能絞盡腦汁,在 JDK 內部也想盡一切辦法提供並發時的系統吞吐量。這裏,我將向大家簡單介紹幾種 JDK 內部的 "鎖" 優化策略。 1、