今天又是愛學習的一天哦~html
日期:2019-6-27 21:10:45java
public synchronized void task(Object arg){
System.out.print(Thread.currentThread() + "開始執行" + arg);
if(arg == null){
this.task(new Object());
}
System.out.print(Thread.currentThread() + "執行結束" + arg);
}
//main
new Obj().task(null);
複製代碼
public void genStr(){
//JIT 優化,消除了鎖
StringBuffer sb = new StringBuffer();
sb.append("a");
sb.append("b");
sb.append("c");
}
複製代碼
屬於運行時的 JIT 編譯優化git
public class LockDemo01{
int count;
public void runTest(){
for(int i = 0; i < 10000; i++){
synchronized(this){
count++;
}
}
}
}
複製代碼
www.cnblogs.com/stevenczp/p… www.cnblogs.com/stevenczp/p…github
一、 輸出jit日誌 (windows)在jre/bin/server 放置hsdis動態連接庫 eclise、idea等工具,加上JVM參數 -server -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:LogFile=jit.logwindows
二、 工具安裝 下載 github.com/AdoptOpenJD… 解壓 經過maven運行 mvn clean compile exec:java安全
三、 配置jitwatch 頁面選擇 config, 配置要調試的項目src源碼路徑,和class編譯路徑 打開jit.log 點擊start 四、 在分析的結果中,選中指定的類,再選擇右側的具體方法,則彈出jit編譯結果app
BitFields 和 State 的對應關係。maven
CAS!CAS!CAS!CAS!CAS!CAS!CAS!工具
相關代碼:src.share.vm.runtime.ObjectMonitor
優先級: 未鎖定 >>> 偏向鎖 >>> 輕量級 >>> 重量級