jvm 這我就能會了 擦

最近老有人問jvm,恕我直言,完蛋了,不會,慢慢學吧,開始第一個學習,後續補充,走起。。。html

我看的他的http://www.javashuo.com/article/p-poxahysy-cd.html算法

咱們(確定不)知道,計算機CPU和內存的交互是最頻繁的,內存是咱們的高速緩存區,用戶磁盤和CPU的交互,而CPU運轉速度愈來愈快,磁盤遠遠跟不上CPU的讀寫速度,才設計了內存,用戶緩衝用戶IO等待致使CPU的等待成本,可是隨着CPU的發展,內存的讀寫速度也遠遠跟不上CPU的讀寫速度,所以,爲了解決這一糾紛,CPU廠商在每顆CPU上加入了高速緩存,用來緩解這種症狀

CPU的主頻不可能無限制的增加,要想不少的提高新能,須要多個處理器協同工做,就是多核

基於高速緩存的存儲交互很好的解決了處理器與內存之間的矛盾,也引入了新的問題:緩存一致性問題。在多處理器系統中,每一個處理器有本身的高速緩存,而他們又共享同一塊內存(下文成主存,

main memory 主要內存),當多個處理器運算都涉及到同一塊內存區域的時候,就有可能發生緩存不一致的現象。爲了解決這一問題,須要各個處理器運行時都遵循一些協議,在運行時須要將這些協議保證數據的一致性。這類協議包括MSI、MESI、MOSI、Synapse、Firely、DragonProtocol等

--------------------------------------------------我擦,這都是些啥。虛擬機內存模型中定義的訪問操做與物理計算機處理的基本一致!緩存

JVM的邏輯內存模型以下:jvm

一、程序計數器學習

做用能夠看作是當前線程所執行的字節碼的行號指示器spa

二、Java 虛擬機棧線程

它的生命週期與線程相同。虛擬機棧描述的是Java 方法執行的內存模型:每一個方法被執設計

行的時候都會同時建立一個棧幀(Stack Frame ①)用於存儲局部變量表、操做棧、動態3d

連接、方法出口等信息。每個方法被調用直至執行完成的過程,就對應着一個棧幀在htm

虛擬機棧中從入棧到出棧的過程。

三、本地方法棧

虛擬機棧爲虛擬機執行Java 方法(也就是字節碼)服務,而本地方法棧則

是爲虛擬機使用到的Native 方法服務,就是c寫的那些native

四、Java 堆

Java 堆(Java Heap)是Java 虛擬機所管理的內存中最大的

一塊。Java 堆是被全部線程共享的一塊內存區域,在虛擬機啓動時建立。此內存區域的

惟一目的就是存放對象實例,幾乎全部的對象實例都在這裏分配內存.

Java 堆是垃圾收集器管理的主要區域,所以不少時候也被稱作「GC 堆」

 

收集器基本都是採用的分代收集算法,因此Java 堆中還能夠細分爲:新生代和老年代;

再細緻一點的有Eden 空間、From Survivor 空間、To Survivor 空間等

------後邊我得開一篇,這裏搞不了了,裝逼之地老是須要深刻研究,看到這裏我就想說這tm,哎就差在這裏

五、方法區

用於存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據。雖

然Java 虛擬機規範把方法區描述爲堆的一個邏輯部分,可是它卻有一個別名叫作Non-

Heap(非堆),目的應該是與Java 堆區分開來

 

不少人願意把方法區稱爲「永久代」(Permanent Generation)


 

--------------------------------------其餘的區我不認,由於不懂,懂了再寫,愛咋咋的

如今個人理解,好比這個http://www.javashuo.com/article/p-pyxvlzha-ea.html

 

我本身的學習博客,這個看了容易跟着我跑偏,持續更新

相關文章
相關標籤/搜索