Java虛擬機引發的連環血案

(個人總結系列)我們是不是經常在回顧java虛擬機結構,每個結構的作用,線程併發,鎖,volatile,垃圾回收,我也是看了就忘,最近就把這些知識點給串起來了,這樣能增強記憶,也便於我們回顧知識點。

由於個人原因,平時很忙,就不會去把每個知識點都給大家分析到位,有些不會的知識點可以根據圖去搜索,然後學習,學完之後你就知道爲什麼一個一個的知識點可以被引出來。

 

《01》每個線程在創建的時候,都會分配一個程序計數器,用來記錄當前線程運行的位置。比如當有兩個線程A, 
     B。同一時間處理器只會處理一個線程的任務,當從A線程切換到B,再從B切換到A,這時候就需要從A程序 
     計數器中獲取之前程序運行的位置。所以是線程私有的。
《02》和java虛擬機棧一樣,本地方法棧是native方法引用的內存棧空間,也是線程私有的。
《03》每個線程在創建的時候,都會分配一個對應的虛擬機棧空間,運行方法時方法入棧,會儲存方法內局部變量 
     等,所以是線程私有的。
《04》java虛擬機堆保存了幾乎所有的java對象,因此堆是GC垃圾回收的主要戰場。線程共享的。
《05》方法區主要存放類結構數據,常量池,靜態屬性是線程共享的,且一般GC滿意度比較低。

知識點鏈接可以到 https://blog.csdn.net/WangRain1/article/details/100270165 中根據提示去學習。

通過串聯知識的方式可以讓我們知道有些知識我們爲什麼要學,爲什麼會有這些知識?比如鎖,爲什麼會有鎖的出現,因爲內存模型,爲什麼會有內存模型,是因爲java虛擬機棧是線程私有的,每個線程都有一個虛擬機棧空間,所以線程修改全局變量時候不能及時的刷新到公共內存中,所以要有鎖等等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章