@[TOC](JVM 基礎入門 - 基礎概念)
**[Java 學習目錄](https://blog.csdn.net/miluan_ren/article/details/107495226)**
怎么說呢作為一個伸手黨滞乙,第一次寫文章,寫的不好的地方多多見諒鉴嗤。
好了斩启,攻城獅們,我知道你們都想要干活醉锅,那就話不多說開始吧兔簇。
基礎入門 → 高級特性 → 底層原理 → 優(yōu)化實戰(zhàn) → 源碼解讀
# 什么是JVM 虛擬機
█Java程序運行過程? ? ? ? ? ? ? █ JDK、JRE與JVM
![Java 虛擬機](https://img-blog.csdnimg.cn/20200719143459811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21pbHVhbl9yZW4=,size_16,color_FFFFFF,t_70)
:? JVM 只是一個java 的虛擬機規(guī)范硬耍。具體的實現(xiàn)其實是有很多的垄琐。下面會講到。
是將Java程序從javac編譯成calss文件執(zhí)行经柴,并運行的一個容器狸窘,通過類加載器進行加載,然后在通過在一般情況下走解釋執(zhí)行坯认,有的是走JIT編譯器朦前。然后將一個class 文件轉為機器碼介杆,讓系統(tǒng)執(zhí)行編譯代碼。
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200719145332214.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21pbHVhbl9yZW4=,size_16,color_FFFFFF,t_70)
# JVM 的語言無關性
? JVM 可以支持多種語言在JVM 上執(zhí)行韭寸,因為JVM 不是執(zhí)行的java 代碼 而是 class編譯后的代碼。其他語言也可以在JVM 上執(zhí)行荆隘,所以也就可以在多種平臺上執(zhí)行了恩伺。
# JVM 的跨平臺
JVM 針對各個版本的OS 有多個不同的JVM 版本可供下載。
# JVM 的實現(xiàn)
JVM 的常見實現(xiàn)![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200719151817268.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21pbHVhbl9yZW4=,size_16,color_FFFFFF,t_70 =500x)
1. Hotspot
2. Jrocket
3. J9
4. TaobaoVM
5. LiquidVM
6. zing
JVM 小歷史
- Oracle 公司
我們常用的 JVM 實現(xiàn)是 Hotspot 版本椰拒,是Oracle 的一個版本晶渠。
Hotspot 進化歷程
1. Hotspot 融合了 jrockit ,原來jrockit 是BEA 公司的燃观,Oracle 購買了jrockit 褒脯, jrockit 號稱是世界上最快的JVM。
2. 在zing 公司擁有那么快的垃圾回收器后缆毁,Oracle 公司收買了開發(fā)人員番川,然后完成了 Hotspot VM 的 ZGC。
- BEA 公司
前后開發(fā)了兩款JVM 一個是上面說的 jrockit脊框。之后又開發(fā)了一款新的JVM Liquid VM 這款虛擬機是直接在硬件上運行的颁督,不需要OS 作為基礎,所以運行效率比較高浇雹。
- IBM 公司
開發(fā)了一款主要提供給自己產品所使用的VM J9 VM(例如IBM Web Sphere)沉御。
- TaoBao 公司
下面說的就是國人的 自豪了 Taobao VM ,并不是說 Taobao VM 重新開發(fā)并定義了自己的VM 昭灵,而是深度定制了 HotSpot 吠裆,在上邊重新梳理了并開發(fā)了垃圾回收的邏輯,回收方式將不再是簡單的根可達烂完,引用計數(shù)等方式试疙,還可以是根據(jù)業(yè)務邏輯來定義回收方式。等等方式窜护。
- zual 公司
zual 公司開發(fā)了一款 zing VM 效斑,垃圾回收可控制在1毫秒,但是和世界上所有的好產品一樣柱徙,好的產品是要收費滴缓屠,而且比Oracle 還貴。
## JVM的內存結構
下面這個圖大家都很熟悉了
![在這里插入圖片描述](https://img-blog.csdnimg.cn/2020071917533339.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21pbHVhbl9yZW4=,size_16,color_FFFFFF,t_70)
- Java虛擬機在執(zhí)行Java程序的過程中會把它所管理的內存劃分為若干個不同的數(shù)據(jù)區(qū)域
- 線程私有與線程共享
**[Java 學習目錄](https://blog.csdn.net/miluan_ren/article/details/107495226)**
下一章節(jié) **[JVM 基礎入門 - 內存結構](https://blog.csdn.net/miluan_ren/article/details/107495083)**