《隔離十四天》系列 -第三天 -理解JVM以及JVM的內存結構

前言

隔離第三天開始變得煩躁,明白了狗子的那顆想要出去撒歡的心。
在這裏插入圖片描述
雖然想出去,但是那顆愛學習的心不能斷,所以還是要繼續寫我都博客。

我想對社區阿姨說,我體溫一直36度,真的沒病,讓我出去看看這個世界吧!!!

好了,言歸正傳。

昨天說到了線程的問題,線程中的synchronized關鍵字是基於JVM層面實現的,所以今天就來說說JVM,

JVM是幹嘛的呢,請看下圖,
在這裏插入圖片描述
圖片來自百度百科。(沒什麼事情是百度解決不了的,如果有那就google)!

我最煩惱的就是理解這些概念,所以說下我的理解。

我所理解的JVM,一句話概括就是:將我們所寫的代碼解析成機器可以識別的語言

如果沒有JVM,那我們想要執行一段java代碼,我們交給機器執行,

我:hey,man,給我輸出一段Hello world

機器:一臉懵逼,what are you talking about?

你看你說的機器聽不懂,機器說的你也看不懂,這就尷尬了!

再舉個例子來說,比如我們跟老外聊天(不懂中文的老外哈)

我說:嘿!你是煞筆!

老外說:Oh,Young man,you are my brother!

你看我們說的他根本不懂,他還以爲我說的是好話呢,但是呢,此時如果有一款翻譯軟件呢,比如谷歌翻譯,於是對話就變成了:

我:hey,you are foolish.
老外:Don't talk to me like that!然後一個沙包大的拳頭招呼過來!

你看有了谷歌翻譯我們說的話老外就全部能聽懂了,最後還給了我們一個拳頭的迴應。所以呢JVM就扮演着谷歌翻譯的角色,幫我們翻譯我們的代碼給機器。

有了JVM我們執行一段hello world,JVM給我們翻譯好交給機器,機器收到了,給我們輸出hello world,你看這不就完美了。

在這裏插入圖片描述

但是問題又來了,我們都在用JVM,然後呢我想輸出hello world,你想輸出hello china,結果呢卻給我輸出hello china,這不就扯犢子了,跟我們想要的結果不一樣啊,
所以呢JVM對於數據的存儲要是有一定的規則的,比如我們輸出hello world交給jvm,然後呢jvm給我們一個密碼,說這是到時候取數據的,然後我們取數據的時候輸入這個密碼,好了我們想要的hello world就出來了,數據也不會錯了!所以這就要說到JVM的內存模型。

在這裏插入圖片描述

那JVM的內存模型怎麼解釋呢,這個我很來勁,其實吧,我理解的JVM模型其實就是我們住的兩室一廳一廚一衛的房子,不信看我怎麼給你解釋。

  • 先說咱們的客廳,客廳是進來房子人人都能進的對吧,然後還是一片空間共享的區域,進來的人跟房子主人聊完天交流完信息,然後就被房子主人趕出去了,所以這是不是就是jvm中的堆。一樣的線程共享,一樣的進來和出去。
  • 再說我們的衛生間,衛生間需要人人都能進的對吧,不然人家想上廁所你不讓人家上,那人家不打人啊。所以這個衛生間是不是可以比喻成JVM中的方法區,也是一樣的線程共享。
  • 再來說廚房,廚房是人家房子的主人管的,人家想讓誰進就讓誰進,人家房子的主人說了算,再說了廚房就那麼大點地方,人人都往裏擠還不爆了啊,所以這個廚房是不是就是JVM中的虛擬機棧。
  • 再來說主臥,這主臥是人家房子的主人的,一個外人不能隨便進去住吧,不然房子的主人不直接轟走你啊,所以主臥是不是就是本地方法棧呢。
  • 最後說次臥,次臥更簡單了,房子的主人想讓誰進去住就進去住,人家說的算,你硬闖人家直接讓你滾呢。所以這是不是就是JVM的程序計數器呢。

最後誰是房子的主人呢,當然是JVM本身了。

所以我嚴重懷疑jvm的作者是不是當初就住在一個兩室一廳一廚一衛的房子裏開發的JVM,想到了這個模型(哈哈哈哈哈,此處純屬YY)

更好玩的來了!

在這裏插入圖片描述
那就是JVM中的GC,你看哈,如果一羣人進入房子,然後在客廳了聊天、打牌、吃飯…,
然後房子的主人說好了好了,你們的消息我都知道了,趕緊滾趕緊滾,然後一羣人就被請出去了,
然後又進來一羣人…以此往復是不是就是GC的過程.

創建對象和清理對象是不是就是進入房子和出去房子的人的過程。而GC就是清理的在這個房子的客廳裏沒有消息價值的人

但是你又跟我擡槓了

 說方法的執行怎麼解釋?

這個更簡單啊,你看JVM中的方法的執行實在虛擬機棧中,而虛擬機棧對應的廚房,那方法的執行不就是在廚房做飯的過程
,方法中的變量以及各種信息不就是做的菜嗎,吃完了不就沒有了嗎。

在這裏插入圖片描述
所以啊,面試的時候遇到面試官讓你回答JVM的內存模型就想想自己的房子,就知道各個區域存放什麼了。

以上就是自己對JVM的理解,也不說恰不恰當了,自己能通過這個記住就算一種方式了,各位也就看看喜歡的關注不喜歡的就當看個笑話!!

To be or not to be,this is a question!

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