聊聊JVM

          JVM,一個熟悉又陌生的名詞,從認(rèn)識Java的第一天起,我們就會聽到這個名字,在參加工作的前一兩年,面試的時候還會經(jīng)常被問到JDK,JRE,JVM這三者的區(qū)別。

          JVM可以說和我們是老朋友了,但是在工作中的應(yīng)用場景也許不如那些框架,但是在關(guān)鍵時候還是得靠它去搞定問題,俗話說得好,知己知彼,方能百戰(zhàn)不殆,JVM作為前往高級工程師的一道坎,從這篇文章開始,我們會去逐步的分析,講解,攻克這座大山。
          什么是JVM
          JVM(Java Virtual Machine),翻譯成中文就是Java虛擬機,總所周知,Java語言有一個非常鮮明的特性,也是前期Java 發(fā)展的口號之一
          Write Once Run Everywhere


          "一次編寫,到處運行",相信作為一名Java開發(fā)人員,我們對這句話都不會陌生,這句話的底氣就來源于我們的JVM。

          其中的原理就是,我們所編寫的源程序java文件,被編譯成了JVM可以識別的字節(jié)碼文件(以class為后綴的文件),到處運行所依賴的其實就是為不同的平臺實現(xiàn)了不同的虛擬機。
          java的程序運行在JVM上,而非直接運行在CPU上。
          JVM的學(xué)習(xí)要點
          首先,我們需要知道的是,作為一個虛擬機,必定是擁有自己的內(nèi)存機制,所以我們必須對他的內(nèi)存機制有所了解,其中包括了內(nèi)存結(jié)構(gòu),垃圾回收機制等一些內(nèi)容。

          其次,我們需要知道,我們寫的源代碼被翻譯成了字節(jié)碼文件(因其后綴名為class,所以也會被稱為類文件),對于這個文件的結(jié)構(gòu),我們必須有所了解,在知道了該類的結(jié)構(gòu)下,對于一些并發(fā)和多線程的知識才能做到洞若觀火,知其然知其所以然。

          該字節(jié)碼文件在進入虛擬機到執(zhí)行之前,會經(jīng)歷一系列的過程,我們對于這個過程的機制一般稱為類加載機制,當(dāng)這個類被加載到JVM中,在運行的過程中,會有一系列的指令去幫助程序到達最終的目的。

          其實,上面說了那么多,都是在幫助我們對于java文件的一個執(zhí)行過程發(fā)生的事情有一個更深的了解,在遇到問題時,我們可以胸有成竹,刨根問底的去解決問題,但是在日常工作中,我們不會甚至肯定不會去看我們寫完的字節(jié)碼文件,我們關(guān)心的是如何使用工具去調(diào)優(yōu),使最低的成本發(fā)揮最高的價值,通過對JVM的調(diào)優(yōu)使我們的程序的魯棒性得到提升。


          關(guān)于JVM的一個補充
          雖然,JVM叫做Java Virtual
          Machine,但是需要注意,隨著Java的發(fā)展壯大,有越來越多的語言加入到JVM生態(tài)中,比如我們耳熟能詳?shù)腉roovy,Scala,Kotlin等等,他們都是依托于JVM平臺的,編譯產(chǎn)生的文件也都是后綴為class的字節(jié)碼文件。

          喜歡文章記得點個贊,感謝支持!

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                欧美人妻精品一区二区免费看 | 青青草公开视频 | 黄片网页版 | 性做久久久久久免费观看 | 中文字幕精品一区二区三区精品 |