原创 【JDK】:java.lang.String、StringBuilder、StringBuffer 源碼解析

String 接口和屬性 String類是final不可繼承的,用來存放字符數組的value[]也是final修飾的,這意味着String類是不可變的,一旦new出來就不能發生改變。因此對一個String類的對象進行任何修改(增加

原创 【JDK】:ConcurrentHashMap高併發機制——【轉載】

在學習ConcurrentHashMap的高併發時,找到了一些高質量的博客,就沒有重複轉載了。分別列出了JDK6中的Segment分段加鎖機制和JDK8中的CAS無鎖算法併發機制。 基於JDK6 在JDK6中ConcurrentH

原创 【深入理解JVM】:類加載器與雙親委派模型

類加載器 加載類的開放性 類加載器(ClassLoader)是Java語言的一項創新,也是Java流行的一個重要原因。在類加載的第一階段“加載”過程中,需要通過一個類的全限定名來獲取定義此類的二進制字節流,完成這個動作的代碼塊就是

原创 【JDK】:HashMap詳解

Hash散列基本思想 哈希表使用數組和鏈表共同實現散列存儲,每一個數組元素可以認爲是散列表中的桶位(buket),每個桶位存放一個鏈表,該鏈表由散列碼(hashCode)相同的節點構成。Hash表的查找就是根據需要查找的對象(ke

原创 【深入理解JVM】:Class類文件結構

概述 我們平時在DOS界面中往往需要運行先運行javac命令,這個命令的直接結果就是產生相應的class文件,然後基於這個class文件纔可以真正運行程序得到結果。自然。這是Java虛擬機的功勞,那麼是不是Java虛擬機只能編譯.

原创 【深入理解JVM】:HotSpot垃圾收集器

相關概念 併發和並行 這兩個名詞都是併發編程中的概念,在談論垃圾收集器的上下文語境中,它們可以解釋如下。 並行(Parallel):指多條垃圾收集線程並行工作,但此時用戶線程仍然處於等待狀態。 併發(Concurrent):指用

原创 【深入理解JVM】:推薦閱讀

王晨純, 面向GC的Java編程 點贊 收藏 分享 文章舉報 smile4lee 發佈了117 篇原創文章 · 獲贊 184 · 訪問量 44萬+ 私信

原创 【深入理解JVM】:Java類繼承關係中的初始化順序

Java類初始化的順序經常讓人犯迷糊,現在本文嘗試着從JVM的角度,對Java非繼承和繼承關係中類的初始化順序進行試驗,嘗試給出JVM角度的解釋。 非繼承關係中的初始化順序 對於非繼承關係,主類InitialOrderWithou

原创 【深入理解JVM】:垃圾收集(GC)概述

爲什麼要垃圾回收 我們知道電腦的內存是有限的,如果一段程序申請了一塊內存空間並執行完計算之後,沒有釋放內存,會導致這塊內存被佔用,那麼可用內存就變少了,如果一個系統很龐大,程序中遲早會把電腦內存耗盡的。爲了提高內存的使用效率,內存

原创 【深入理解JVM】:內存分配與回收策略

Java技術體系中所提倡的自動內存管理最終可以歸結爲自動化地解決了兩個問題:給對象分配內存以及回收分配給對象的內存。 對象的內存分配,往大方向講,就是在堆上分配,對象主要分配在新生代的Eden區上,如果啓動了本地線程分配緩衝,將按

原创 【JDK】:java.lang.Integer源碼解析

本文對JDK8中的java.lang.Integer包裝類的部分數值緩存技術、valueOf()、stringSize()、toString()、getChars()、parseInt()等進行簡要分析。 Integer緩存 先來

原创 【深入理解JVM】:Java內存模型JMM

多任務和高併發的內存交互 多任務和高併發是衡量一臺計算機處理器的能力重要指標之一。一般衡量一個服務器性能的高低好壞,使用每秒事務處理數(Transactions Per Second,TPS)這個指標比較能說明問題,它代表着一秒內

原创 【JDK】:ArrayList和LinkedList源碼解析

ArrayList ArrayList也叫數組列表,底層使用的數組實現的,嚴格來說是動態數組。 ArrayList工作原理 ArrayList工作原理其實很簡單,底層是動態數組,每次創建一個ArrayList實例時會分配一個初始容

原创 【JDK】:Java容器框架

容器框架概述 在JDK8中rt.jar文件中,java.util.*;包中的容器主要包括List、Set、Queue和Map四個大類,其中List、Set、Queue是和Collection接口相關的容器,而Map是單獨列出來的容

原创 【JDK】:Java容器框架——同步容器與併發容器

前面的文章中詳細介紹了Java的容器框架,在此基礎上,本文對Java中的同步容器與併發容器做一些介紹。 fail-fast機制 快速報錯機制(fail-fast)能夠防止多個進程同時修改同一個容器的內容。如果在你迭代遍歷某個容器的