java相關(guān)

gitlab啟動(dòng) / 關(guān)閉 / 重啟命令:gitlab-ctl start / stop / restart

多線程問(wèn)題

* 多個(gè)線程調(diào)用同一個(gè)類的同一靜態(tài)方法,或者調(diào)用同一對(duì)象的同一方法,在方法中沒(méi)有引用外部變量時(shí),不會(huì)有多線程問(wèn)題。

java進(jìn)程cpu占用過(guò)高問(wèn)題排查

1. top(顯示進(jìn)程所有進(jìn)程,找出占用cpu高的java進(jìn)程)

2. ps -mp pid -o THREAD,tid,time (找出進(jìn)程下占用cpu高的線程)

3. printf "%x\n" tid (將線程id轉(zhuǎn)成16進(jìn)制)

4. jstack pid |grep tid -A 30 (打印線程的堆棧信息)

查看java進(jìn)程啟動(dòng)參數(shù)命令

1. jcmd pid VM.flags

2. jinfo -flags pid

jvm常用啟動(dòng)參數(shù)

java -jar?-Xms2g -Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=512k example-0.0.1-SNAPSHOT.jar

線上服務(wù)器問(wèn)題排查

https://fredal.xin/java-error-check?

java進(jìn)程沒(méi)了,可能因?yàn)橄到y(tǒng)內(nèi)存不夠被linux殺掉。cat /var/log/message |grep 'Out of memory'

線程池執(zhí)行任務(wù)邏輯和線程池參數(shù)關(guān)系

corePoolSize:核心線程數(shù)量

maximumPoolSize:線程池最大數(shù)量

keepAliveTime:空間線程存活時(shí)間

workQueue:線程池緩沖隊(duì)列

threadFactory:線程池創(chuàng)建線程使用的工廠

handler:線程池對(duì)拒絕任務(wù)的處理策略


線程池執(zhí)行任務(wù)邏輯

單個(gè)controller請(qǐng)求數(shù)及響應(yīng)時(shí)間參考(controller邏輯很簡(jiǎn)單,直接返回字符串):

請(qǐng)求數(shù)????????請(qǐng)求耗時(shí)? ? ? ?平均單次請(qǐng)求耗時(shí)(s)

10000? ? ? ? ? ? 2.91? ? ? ? ? ? ? ? ?0.000291

100000? ? ? ? ? 17.9? ? ? ? ? ? ? ? ?0.000179

1000000? ? ? ? 175.72? ? ? ? ? ? ?0.000175

java鎖

鎖的存儲(chǔ):存儲(chǔ)在對(duì)象頭信息里

鎖的類型:

偏向鎖:不存在鎖競(jìng)爭(zhēng)時(shí)采用,默認(rèn)關(guān)閉。

輕量級(jí)鎖:不存在鎖競(jìng)爭(zhēng)時(shí)采用的鎖。

重量級(jí)鎖:存在鎖競(jìng)爭(zhēng)采用。

解決hash沖突方法

hash沖突:多個(gè)不同的key通過(guò)hash函數(shù)運(yùn)算之后落到同一個(gè)數(shù)組下標(biāo)

假設(shè)下標(biāo)為i

1. 線性探索(開(kāi)放尋址法)。若下標(biāo)i有數(shù)據(jù),則判斷i+1是否有數(shù)據(jù),無(wú)數(shù)據(jù)將數(shù)據(jù)存入i+1,否則判斷i+2 .... eg: ThreadLocal

2. 鏈?zhǔn)降刂贩?。下?biāo)沖突的地方采用鏈表結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)。eg: HashMap

3. 再hash(通過(guò)多個(gè)hash函數(shù)運(yùn)算)eg: 布隆過(guò)濾器(底層采用bitMap實(shí)現(xiàn))

4. 建立公共溢出區(qū)(把hash表分為基本表和溢出表,發(fā)生沖突的數(shù)據(jù)存入溢出表中)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容