原创 JVM系列(4)-垃圾收集算法

上一節講了判斷"垃圾"的方法,有引用計數和可達性分析兩種方法。這一節看下,回收這些“垃圾”的方法。 方法1:標記-清除算法 見名知意,先標記,再清除;標記出所有的可回收對象後,統一回收。 缺點:容易產生大量的內存碎片,如果分配

原创 JVM系列(5)-HotSpot 2 垃圾收集器

今天繼續HotSpot的學習,聊聊垃圾收集器。 之前講過垃圾收集算法,可以參考這裏JVM系列(4)-垃圾收集算法,垃圾收集算法講的是思想或者理論,垃圾收集器呢,就是其實現。 知識點1:HotSpot有哪些垃圾收集器呢?

原创 JVM系列(5)-HotSpot 1

問題1:HotSpot是什麼東東? JVM制定了一個規範,不同的公司或者個人可以根據規範實現自己的Java虛擬機。爲了便於理解可以將規範理解爲接口,接口可以簡化理解爲一個方法,定義應該具有哪些功能。 例如swap(a,b) 意思

原创 JVM系列(2)-對象和OOM異常

上一講中,我們瞭解了JVM的內部結構,更準確的講應該是JVM運行時數據區,知道了對象的實例是在堆中分配的。那到底是怎麼創建的,都有哪些信息需要創建,我們今天就先講下這個,以Hotspot實現爲例。 問題1:對象是怎麼創

原创 讀書筆記-《Java NIO》:第三章 通道(4)

1. 內存映射文件 FileChannel中有一個map()方法,這個方法是做什麼用的呢? 記不記得第一章講過的虛擬內存和直接存儲的概念?不記得沒關係,看下面這張圖。常規情況下,用戶空間的進程想要讀取一塊磁盤數據,需要發起系

原创 讀書筆記-《Java NIO》:第二章 緩衝區(2)

今天接着看Java NIO第二章O(∩_∩)O~ 1. 複製緩衝區 複製緩衝區,我們可以使用以下3個函數,以CharBuffer爲例 Note:複製並非deep copy,可以理解爲淺copy,複製的緩衝區和原來的緩衝

原创 讀書筆記-《Java NIO》:第三章 通道(1)

封面準備出一個女神系列,第一期-孫燕姿O(∩_∩)O~,情歌一首《開始懂了》 今天學習第三章通道~~~ 1. 通道是個什麼東東? 最近南京地鐵安檢,大包小包都要過安檢。有沒有印象,有的安檢機會佩帶一個小筐,這個小筐就類

原创 讀書筆記-《Java NIO》:第二章 緩衝區(1)

上週生病停更了一週,這周我們繼續^_^。 今天我們來看下第二章---緩衝區,瞭解下不同的緩衝區類型,並學會使用。 焦點1:Java NIO的Buffer有哪些類型? Note: Buffer及其繼承類CharBuffe

原创 讀書筆記-《Java NIO》:第三章 通道(2)

封面女神系列,第二期-高圓圓O(∩_∩)O~ 繼續第三章的學習。。。 問題1: 什麼是Scatter/Gather(發散/匯聚)? 操作系統中有一個概念Scatter/Gather,是什麼意思呢? 有的操作系統設

原创 讀書筆記-《Java NIO》 : 第一章 簡介

最近準備花點時間將Java NIO梳理一下,在網上download了一本Java NIO。計劃跟着書的目錄,每天讀一點,順便也寫寫博文,堅持每天記一點。 今天我們來看看第一章講的什麼,充滿期待哦^_^ I/O有點類似於下水道

原创 讀書筆記-《Java NIO》:第三章 通道(3)

言歸正傳,今天來看看通道中的文件通道~~~ 焦點1: File Channel在整個I/O體系中的位置 先複習下I/O的簡單分類,I/O廣義上分爲File I/O和Stream I/O, FileChannel文件通道,

原创 HornetQ學習系列(3)

今天看下如何使用HornetQ,主要包括如何啓動,停止HornetQ服務以及如何配置一些參數。 問題1: HornetQ服務怎麼啓動和停止? HornetQ的目錄結構如下,在bin目錄下有run.bat(Windows),r

原创 JVM系列(1)-Java內存區域

前段時間比較忙,公衆號斷更了一段時間,當下得空,準備寫個JVM系列,JVM也就是Java Virtual Machine(Java虛擬機的縮寫)。 考慮或者定位的問題的時候,經常會思考下數據的流向,那JVM是在哪個位置,哪

原创 讀書筆記-《Java NIO》:第三章 通道(5)

這幾周事情有些多,沒更新博文,今天得空,咱們繼續。 學過了FileChannel,今天來看看SocketChannel。 issue 1:先來看下SocketChannel在類圖中的位置,看能發現些什麼? 發現1:從圖

原创 JVM系列(3)-哪些內存需要回收?

今天看看垃圾收集和內存分配策略。垃圾收集無非就是清除垃圾,釋放內存,而JVM就像一個大管家,不需要你這位當家的介入,他把垃圾清理這個活給攬下了,你只需要創建對象,生產垃圾,JVM這位大管家來打掃。前面講了JVM的運行時數據區,這些區