Java核心基數36講學習筆記

1.JDK(JRE的超集,提供了更多工具如編譯器和診斷工具等)>JRE(Java運行環境,包含JVM和Java類庫以及一些模塊)>JVM
2.Java基于解釋執行不準確,Java通過Javac編譯為字節碼,在運行時通過JVM內嵌的解釋器將字節碼轉化為機器碼。但有一種動態編譯器能在運行時將熱點代碼編譯為機器碼,這就屬于編譯執行而不是解釋執行。JDK8實際是解釋和編譯混合的一種模式。
3.Exception和Error都是繼承了Throwable類,在Java中只有Throwable類的實例才能被拋出(throw)或捕獲(catch)
4.try-catch盡量不要捕獲類似Exception這種通用的異常,而是捕獲特定異常。
5.try-catch代碼會產生額外的性能開銷,盡量不要一個大的try包住整段代碼。
6.Java每實例化一個Exception,都會對當時的棧進行快照,這是一個相對比較重的操作。如果發生的非常頻繁,這個開銷可就不能被忽略了。
7.捕捉到異常最好就地解決,實實在在處理。
8.不要在finally代碼塊處理返回值
9.如無必要,勿用異常
10.final變量產生了某種程度的不可變(immutable)的效果,所以,可以用于保護只讀數據,尤其是在并發編程中,因為明確地不能再賦值fnal變量,有利于減少額外的同步開銷,也可以省去一些防御性拷貝的必要。(提高性能,但忽略不計)
11.Java沒有const,通過static+final實現
12.通過關鍵字new出來的就是強引用,當JVM空間不足時寧愿拋出OutOfMemoryError運行時錯誤(OOM)使程序異常中止也不會被GC回收。只要超過了引用的作用域或者顯式地將相應(強)引用賦值為 null,就是可以被垃圾收集的了,具體回收時機還是要看垃圾收集策略。
13.軟引用生命周期比強引用短,只用當JVM認為內存不足才會去嘗試回收軟引用指向的對象。軟引用通常用來實現內存敏感的緩存。
14.弱引用生命周期比軟引用生命周期短,在垃圾回收器掃描內存區域時一旦發現弱引用不管內存空間是否足夠都會回收。弱應用同樣可用于內存敏感的緩存。
15.幻想引用(虛引用)無法通過引用訪問對象去獲取對象,幻象引用僅僅是提供了一種確保對象被 fnalize 以后,做某些事情的機制。如果
一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。虛引用必須和引用隊列 (ReferenceQueue)聯合使用。當垃圾回收器準備回收一個對象時,如
果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中。
ReferenceQueue queue = new ReferenceQueue ();
PhantomReference pr = new PhantomReference (object, queue);
程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發現某個虛引用已經被加入到引用隊列,那么就可以在所引用的對象的內存被回收之
前采取一些程序行動。
16.String的拼接剪裁都會產生新的String對象。
17.StringBuffer線程安全(通過synchronized實現),StringBuilder非線程安全。都是繼承了AbstractStringBuilder。
18.StringBuffer和StringBuilder內部數組默認是每次+16,如果一開始明確字符串的長度可以先進行初始化,避免擴容的開銷,擴容是拋棄原有的數組,而創建新的數組。還要進行arraycopy。
19.OOM(OutOfMemoryError)內存溢出,內存泄漏
20.CGLIB能代理普通的類和接口,原生JDK只能代理接口。
21.Integer和int的區別:
1.Integer的默認初始值是null,而int的默認初試值是0。
2.Integer變量必須先實例,int變量則可以直接使用
22.基本數據類型和引用數據類型做運算時會拆箱.
23.基本數據類型賦值給引用數據類型的時候會裝箱.
24.Integer的緩存區是-128到127,意思是當構建出來的值是這個范圍的時候是直接從緩存區獲取而不是重新生成(int不是這樣)。
25.自動拆裝箱可以簡化代碼的書寫,簡寫轉化的過程。
26.Vector是線程安全的動態數組,如果數組滿了會創建新的數組(原來一倍)并拷貝原數組數據。
27.ArrayList非線程安全,當數組滿了擴容50%
28.LinkedList雙向鏈表,不需要調整容量,非線性安全.
29.TreeSet支持順序訪問,但是添加刪除包含等操作相對低效(log(n))
30.HashTable線程安全,不支持null鍵和值
31.HashMap支持null鍵和值
32.TreeMap是基于紅黑樹的一種提供順序訪問的Map
33.HashMap的內部結構是數組+鏈表(Entry<V,V>),如果鏈表大小超過閾值則會變成樹形結構。
34.HashMap的負載因子為0.75,如果一開始能估算出HashMap的大小進行初始化是最好的,以免進行擴容損耗性能(重新計算哈希值存儲)
35.ReentrantLock性能比Synchronized高
36.ReentrantLock必須手動獲取和釋放鎖
37.Condition需要與 Lock 聯合使用,它的作用就是代替Object的那些監視器方法,Condition 中的await()、signal()和signalAll()方法分別對應著Object的wait()、notify()和notifyAll()方法。
38.自旋鎖是競爭鎖失敗的線程的時候不會再操作系統層面掛起等待,而是做幾個空循環(希望能在不久獲取到鎖),然后就進入臨界區。如果還沒有獲得鎖則線程會在操作系統層面掛起。在空循環的好處是自旋的消耗會小于線程阻塞掛起的消耗,適用于鎖競爭不激烈的情況。如果鎖競爭激烈導致線程在獲取鎖之前一直自旋占用CPU做無用功,造成CPU浪費.
39.自旋鎖只在多核CPU有效,單核CPU毫無效果(自旋鎖獲取鎖不成功會一直重試,導致一直占用CPU ,而其他線程不能運行而導致當前線程無法釋放鎖)。
40.通常弱引用都會和引用隊列配合清理機制使用,但是ThreadLocal是個例外
41.可以建立一個線程掃描死鎖情況,Java的API有ThreadMXBean,通過findDeadlockedThreads()方法定位。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容