深入淺出Java虛擬機

JVM Java Virtual Machine 翻譯過來叫JAVA虛擬機

我們是誰? 我們是咕泡學院,今天給大家來聊聊JVM的一段內容,希望對大家有幫助。從我們的辦學宗旨上來說,做IT人的指路明燈,職場生涯的精神導師,我們希望帶給大家的不單單是知道JVM這個東西,而是 知其然,知其所以然。

Part 0x01 什麼是JVM

通過一個圖來理解一下。

小王寫了一個HelloWorld.java程序,但是從字面上來說HelloWorld.java是小王也就是人能理解的,但是要在機器上運行,機器肯定是不能理解的,那麼我們就需要編譯、解析、鏈接等等變成彙編或者01010101這樣能被機器理解的指令。

如果說編譯、解析、鏈接等等就是JVM全部功能的話,Java也不能夠不要臉地在1995年發佈1.0版本的時候就提出“Write Once Run EveryWhere” ,因為如果就如上面所說的那個功能C語言也能做到,如果這樣,我們是看不到JAVA的跨平臺的特性的。

那JVM還包括什麼呢? 如下圖所示,JVM是綠色區域,不單單是編譯、解析、鏈接等等 還包含了對底層操作系統指令的轉換功能,也就是說對於同一份class可以在不同的機器 windows\linux下運行。

深入淺出Java虛擬機

總結一下,JVM是什麼?提供了哪些功能

JVM不單是對我們的JAVA文件做了編譯等操作,還有另外一個了不起的功能,它從軟件層面做了一個對不同操作系統的兼容(它是怎麼做到的呢?我們可以看到JVM從源頭也就是JAVA文件上統一了,最終我們拿到的是統一的class文件,那麼我們就可以用不變去映射變,變就是指不同操作系統的指令和操作),此外還有一些比較重要的功能,且聽下面part 0x02解釋。

既然提到了這裡,我們就不得不提一下,JVM\JDK\JRE三者之前的關係了,因為我們是有追求的

JVM 上面已經解釋清楚了

JDK Java Development Kit Java編譯器、調試器(jconsole\jmap等)以及基礎類庫

JRE Java Runtime Environment Java程序運行時所需要的環境、核心類庫和支持文件

從上面的解釋上來看,JVM是屬於JRE範疇的,切記!

Part 0x02 為什麼要學習JVM?

我問過很多面試者或者學員,為什麼學習JVM,得到了很多的回答大致有以下的

1、面試的時候經常會被問到,不學不行啊,背也要背一些。

2、為了裝13,不會不叫高級程序員。

。。。。。。

很多很有意思的回覆,我為什麼要問這個問題呢,我發現現在的人功利性太強了,學一門東西都要先問一個,學了能幹嘛,能賺多少錢。

我能理解這樣的功利心理,在這裡我從理論層面給解釋一下為什麼要學習JVM

JVM按上面的解釋,他提供了上面的功能外,還提供了一個非常重要的功能就是大家熟知的內存管理。相對於C、C++語言每次去申請空間都要手動地去 allcate,使用結束之後還要手動free掉。JVM從這個層面釋放程序員們對內存分配和管理的精力,只需要去關注業務邏輯地實現,不再需要花費更多的心力在內存分配和回收上。

但是 Every coin has two sides .

JVM幫我們管理了內存是幫我們省事了,但是,當你的代碼用得不恰當的時候會導致內存溢出或者內存洩漏,這個時候,如果你對JVM一無所知,怎麼去定位和處理問題呢!that's why !

Part 0x03 How to Learn ?

以學習JVM運行時數據區為例我來講講我的學習方法。

深入淺出Java虛擬機

首先還是老三樣,學習之前問自己幾個問題:

  1. 它是什麼? What 認知

  2. 學了它能怎麼樣? (?) 目的

  3. 怎麼學? How 方法

1.它是什麼?

就JVM運行時數據區,它是什麼首先可以從字面意思上來理解一下,虛擬機的運行時數據區,不就是像我們的去理解操作系統一樣,操作系統層面分為 數據流、指令流、控制流,那運行時數據區是不是對應的class文件加載到JVM裡之後的流動呢。

不好理解? 沒關係,我們看一個圖就好理解了。

深入淺出Java虛擬機

看到沒,就你喝水一樣的,你喝下去的水,會流經你的五臟六腑,不同的分子會被不同的地方吸收和存放。

2. 學了它能怎麼樣?

好理解一些沒有,那麼我們的JVM運行時數據區也是一樣的,它描述的是class文件被加載到JVM裡之後,每一行代碼都被放到了運行時數據區的哪一塊,每個方法在運行的時候我們的棧上是如何分配和出棧入棧的。that's why ! 學了這個你就知道了你的每一個變量,每一行代碼在JVM裡運行時都分配在哪了.

深入淺出Java虛擬機

3. 怎麼學?

說了半天,就是在告訴你怎麼學,@ —— @

~ ~覺得不過癮?往下看

深入淺出Java虛擬機

如果需要更多更全的學習視頻,可以關注【咕泡學院官網】,我們的部分視頻是免費下載的哦 。

深入淺出Java虛擬機

深入淺出Java虛擬機

相關推薦

推薦中...