大話java面試-java基礎(chǔ)-3

1硕并、ReentrantLock和Synchronized的區(qū)別,以及實(shí)現(xiàn)原理

ReentrantLock是java代碼實(shí)現(xiàn)秧荆,Synchronized是字節(jié)碼實(shí)現(xiàn)倔毙,ReentrantLock可使用公平鎖、可根據(jù)Condition分組喚醒線程辰如、而不是像synchronized要么隨機(jī)喚醒一個(gè)線程要么喚醒全部線程普监,ReenTrantLock提供了一種能夠中斷等待鎖的線程的機(jī)制,通過(guò)lock.lockInterruptibly()來(lái)實(shí)現(xiàn)這個(gè)機(jī)制琉兜。

ReentrantLock內(nèi)部實(shí)現(xiàn)原理:AbstractQueuedSynchronizer簡(jiǎn)稱(chēng)AQS凯正,AQS維護(hù)一個(gè)volatile int state字段和雙向隊(duì)列來(lái)實(shí)現(xiàn)。AQS詳解

Synchronized實(shí)現(xiàn)原理:代碼塊時(shí)是在字節(jié)碼中加入moniterenter和moniterexit豌蟋,當(dāng)執(zhí)行到moniterenter時(shí)會(huì)獲取鎖定對(duì)象的鎖廊散,方法時(shí)是在Class文件的方法表中將該方法的access_flags存放ACC_SYNCHRONIZED。鎖定的對(duì)象的加鎖是通過(guò)對(duì)象頭MARKWORD中指向的當(dāng)前對(duì)象的ObjectMoniter來(lái)加鎖梧疲。Synchronized的內(nèi)部實(shí)現(xiàn)原理以及Moniter實(shí)現(xiàn)原理允睹。

2、jvm問(wèn)題排查

1幌氮、程序hung诅允堋:線程死鎖、線程堵塞该互。通過(guò)jps獲取當(dāng)前進(jìn)程id米者,jstack -l pid,出現(xiàn)BLOCKED宇智、deadlock蔓搞。

2、CPU100%: jps查看pid随橘,top -H -p pid查看cpu最高的線程id,jstack pid> a.log 然后在a.log中搜索線程id的16進(jìn)制喂分。

3、頻繁full gc:可能是oom机蔗。jmap -dump:format=b,file=/home/admin/dump.bin pid導(dǎo)出堆的信息蒲祈,用VisualVM進(jìn)行分析甘萧。jstat -gcutil pid查看gc情況。一次線上OOM排查經(jīng)過(guò)

3讳嘱、java 中的鎖 -- 偏向鎖幔嗦、輕量級(jí)鎖酿愧、自旋鎖沥潭、重量級(jí)鎖

偏向鎖適用于單個(gè)線程時(shí)提高性能,輕量級(jí)鎖適用于多個(gè)線程交替執(zhí)行嬉挡。

偏向鎖:首先CAS修改線程id為當(dāng)前線程id钝鸽,失敗并且線程id不是當(dāng)前線程,在安全點(diǎn)判斷持有鎖的線程是否存在庞钢,不存在標(biāo)示為未鎖定拔恰,存在升級(jí)為輕量級(jí)鎖。

輕量級(jí)鎖:復(fù)制MARKWORD到LOCK record里基括,CAS修改線程id為當(dāng)前線程id颜懊,失敗并且線程id不是當(dāng)前線程,進(jìn)入自旋CAS獲取风皿,獲取失敗升級(jí)為重量級(jí)鎖河爹。執(zhí)行結(jié)束,復(fù)制的那份MARK word用CAS替換桐款,如果失敗也進(jìn)入重量級(jí)鎖咸这。java 中的鎖?關(guān)于偏向鎖、輕量級(jí)鎖將的不是很好魔眨,參考這個(gè)《JVM源碼分析之synchronized實(shí)現(xiàn)

4媳维、堆外內(nèi)存使用以及回收機(jī)制

堆外內(nèi)存時(shí)jvm以外的內(nèi)存,當(dāng)建立一個(gè)堆外內(nèi)存的時(shí)候會(huì)在堆中創(chuàng)建一個(gè)Cleaner對(duì)象對(duì)應(yīng)DirectByteBuffer遏暴,當(dāng)DirectByteBuffer對(duì)象被回收時(shí)侄刽,把cleaner對(duì)象放到ReferenceQueue隊(duì)列,在FULL gc時(shí)會(huì)調(diào)用ReferenceQueue中所有Cleaner對(duì)象的clear方法朋凉。也可以手動(dòng)獲取Cleaner對(duì)象州丹,并調(diào)用clear方法進(jìn)行回收。堆外內(nèi)存的回收機(jī)制分析

ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 1024 * 200);//200M堆外內(nèi)存

((DirectBuffer)buffer).cleaner().clean();//手動(dòng)回收

5侥啤、強(qiáng)引用当叭、軟引用、弱引用盖灸、虛引用

強(qiáng)引用:只要引用存在永不回收蚁鳖。比如new 一個(gè)對(duì)象。

軟引用:內(nèi)存溢出之前進(jìn)行回收赁炎。SoftReference醉箕。應(yīng)用:緩存

弱引用:第二次垃圾回收時(shí)回收钾腺。WeakReference。

虛引用:垃圾回收時(shí)回收讥裤。PhantomReference放棒。

6、動(dòng)態(tài)代理

jdk動(dòng)態(tài)代理:被代理類(lèi)必須實(shí)現(xiàn)了接口己英。原理實(shí)現(xiàn)InvocationHandler接口间螟,內(nèi)部還是使用的反射。

cglib代理:被代理類(lèi)不時(shí)必須實(shí)現(xiàn)接口损肛,性能比不上jdk厢破,通過(guò)繼承被代理類(lèi)來(lái)實(shí)現(xiàn)。需要實(shí)現(xiàn)MethodInterceptor接口治拿。

7摩泪、ArrayList、Vector劫谅、HashSet见坑、HashTable默認(rèn)容量和擴(kuò)容

ArrayList:默認(rèn)容量:10 擴(kuò)容增量:1.5*原數(shù)組長(zhǎng)度

Vector:默認(rèn)容量:10?擴(kuò)容增量:2*原數(shù)組長(zhǎng)度

HashSet:默認(rèn)容量:16?擴(kuò)容增量:2*原數(shù)組長(zhǎng)度

HashTable:默認(rèn)11?擴(kuò)容增量:2*原數(shù)組長(zhǎng)度+1

8、淺拷貝和深拷貝的區(qū)別

淺拷貝:只拷貝當(dāng)前對(duì)象捏检,而當(dāng)前對(duì)象引用的其它對(duì)象還是引用同一個(gè)對(duì)象荞驴。

深拷貝:不僅拷貝當(dāng)前對(duì)象還拷貝當(dāng)前對(duì)象引用的對(duì)象。

A a = new A();A b =a;//只是引用 不叫拷貝

9未檩、線程的五種狀態(tài)和線程池的五種狀態(tài)以及狀態(tài)流轉(zhuǎn)

線程五種狀態(tài):新建New戴尸、就緒Runnable、運(yùn)行Running冤狡、阻塞Blocked及死亡Dead孙蒙。

線程的狀態(tài)流轉(zhuǎn)

線程池的5種狀態(tài):Running、ShutDown悲雳、Stop挎峦、Tidying、Terminated合瓢。

線程池的狀態(tài)流轉(zhuǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坦胶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晴楔,更是在濱河造成了極大的恐慌顿苇,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件税弃,死亡現(xiàn)場(chǎng)離奇詭異纪岁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)则果,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)幔翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)漩氨,“玉大人,你說(shuō)我怎么就攤上這事遗增〗芯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵做修,是天一觀的道長(zhǎng)霍狰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缓待,這世上最難降的妖魔是什么蚓耽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮旋炒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘签杈。我一直安慰自己瘫镇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布答姥。 她就那樣靜靜地躺著铣除,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹦付。 梳的紋絲不亂的頭發(fā)上尚粘,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音敲长,去河邊找鬼郎嫁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祈噪,可吹牛的內(nèi)容都是我干的泽铛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辑鲤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盔腔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起月褥,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弛随,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后宁赤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體舀透,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年礁击,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盐杂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逗载。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖链烈,靈堂內(nèi)的尸體忽然破棺而出厉斟,到底是詐尸還是另有隱情,我是刑警寧澤强衡,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布擦秽,位于F島的核電站,受9級(jí)特大地震影響漩勤,放射性物質(zhì)發(fā)生泄漏感挥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一越败、第九天 我趴在偏房一處隱蔽的房頂上張望触幼。 院中可真熱鬧,春花似錦究飞、人聲如沸置谦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)媒峡。三九已至,卻和暖如春葵擎,著一層夾襖步出監(jiān)牢的瞬間谅阿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工酬滤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留签餐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓敏晤,卻偏偏與公主長(zhǎng)得像贱田,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘴脾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一宝鼓、多線程 說(shuō)明下線程的狀態(tài) java中的線程一共有 5 種狀態(tài)女阀。 NEW:這種情況指的是篡帕,通過(guò) New 關(guān)鍵字創(chuàng)...
    Java旅行者閱讀 4,680評(píng)論 0 44
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法留美,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法奏司,繼承相關(guān)的語(yǔ)法乔询,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,643評(píng)論 18 399
  • Java8張圖 11韵洋、字符串不變性 12竿刁、equals()方法黄锤、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,707評(píng)論 0 11
  • 今天(9月25日)早晨食拜,陳龍愛(ài)妻章齡之在微博上曬出一組一家四口的幸福出街照鸵熟,并配文:“這樣一天天的過(guò)日子。就好滿足...
    簡(jiǎn)娯閱讀 233評(píng)論 0 1
  • 如果每一天都有這樣清澈的藍(lán)天 如果每一個(gè)生命沉淀以后都希望重生 放逐生命慢慢的游到水里呼吸 離苦得樂(lè)负甸,自由自在流强。
    戒樂(lè)閱讀 262評(píng)論 0 0