JVM的性能優化(下)

GC的調優工具 :jstat 主要針對於GC的java

經過Dos命令運行 D:\compile\worker.java瀏覽器

從新開啓一個Dos窗口安全

jstat-class2041(java程序的pid值)  :查看加載了多少個類多線程

jstat -compiler 2041   :查看編譯的狀況併發

jstat -gc 2041 查看垃圾的回收統計工具

jstat -gc 2041 1000 5 1秒打印一次總共打印5次this

GC的調優工具 jmap :主要針對於內存使用狀況的線程

1)經過 Dos 命令運行 D:\compile\Worker.javaorm

2)從新開啓一個Dos窗口對象

jmap-heap 2041(java程序的PID值)   //查看內存使用狀況

jmap -histo 2041 |more //查看內存中對象數量及大小

jamp -dump:format=b,file=d:/test/dump.dat 2041  //將內存使用狀況dump到文件中

jhat -port 9999 d:/test/dump.dat     //經過jhat對dump文件進行分析 端口號能夠自定義 而後在瀏覽器中經過 127.0.0.1:9999就能夠訪問了.

GC的調優工具 jstack  :主要針對於線程

1)線程的六種狀態:

新建,就緒,運行(運行的時候會發生等待或者阻塞),死亡

2)經過jstack命令能夠查看java的程序狀態

jstack 2041(Java程序的pid值)

GC的可視化調優工具

本地調優:該工具位於JDK安裝目錄 /bin/jvisualvm.exe //雙擊能夠直接使用

該工具涵蓋了上述全部命令

遠程調優:

JVM的線程安全與鎖的倆種形式

線程安全:多線程,併發,操做統一數據 就可能引起安全問題 須要用到"同步"解決

"同步"分類:

同步代碼塊:

     格式:

synchronized (鎖對象){

//要加鎖的代碼

}

注意:1)同步代碼塊的鎖對象能夠是任意類型的對象

        2)必須使用同一把鎖 否側可能出現鎖不住的狀況

同步方法:

靜態同步方法:

鎖對象是:該類的字節碼文件對象

非靜態同步方法:鎖對象是this

Lock 鎖

1)LOCK鎖和synchronized的區別

1.1) synchronized 是java內置的語言,是java的關鍵字

1.2)synchronized 不須要手動區去釋放鎖 當synchronized方法或者synchronized代碼塊執行完畢後 系統會自動釋放該對象鎖的佔用

而lock必須手動釋放鎖,若是沒有主動釋放鎖,就有可能形成死鎖的問題

示例代碼

相關文章
相關標籤/搜索