精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試時候總喜歡問的 JVM 要點在哪?

運維 數據庫運維 虛擬化
什么是新生代?主要是用來存放新生的對象。一般占據堆空間的1/3,由于頻繁創建對象,所以新生代會頻繁觸發MinorGC進行垃圾回收。

本文轉載自微信公眾號「Java極客技術」,作者鴨血粉絲 Tang。轉載本文請聯系Java極客技術公眾號。

面試的時候,很多面試官問 JVM 的時候,我們作為一個開發者,很多時候很難 Get 到面試官提問的要點,因為 JVM 確實太多了,從程序計數器開始,然后堆,然后棧,但是面試的時候卻總是回答不好這個問題,很多情況就是沒有系統的去看過所以回答面試題的時候,會出現語無倫次,這一塊內容,那邊一塊內容,總是回答不好,幾天阿粉就來分享給大家一個 JVM 的面試教程,對你有用的話,點贊關注和收藏一波。

你對 JVM 了解么?

首先,問這個問題的,一般都是問完了一些基礎了,這時候需要你自己從頭開始說 JVM 了,很多人實際上想到就是垃圾回收機制,確實,沒錯,但是,如果你直接就開始說是不是垃圾回收機制的時候,就已經有點答非所問了。

為什么這么說,因為 JVM 的垃圾回收機制,都是發生在 堆內存 的,但是,JVM 的劃分可不是只要堆內存的,這時候回答應該怎么回答?

** JVM 的內部結構,最主要的內部結構是什么!**

JVM 分成了兩個部分

1.線程共享區域

2.線程私有區域

線程共享區域包含:堆(Heap)、方法區

線程私有區域包含:程序計數器、虛擬機棧(Stack)、本地方法棧

因為 JVM ,那可是不單單只有 堆(Heap) 的存在呀,其他的存在也是不可缺少的,為什么阿粉要這么說呢?

因為有些面試官會問 JVM 的類加載機制 你了解么?

如果你只是了解了垃圾回收機制的話,那你這個問題,是不是有點麻了,有點懵了,這不就芭比Q 了么?

那么 JVM 的類加載機制 是個什么呢?

回答:

首先通過類加載器(ClassLoader)會把 .class字節碼文件加載到內存中——運行時數據區(Runtime Data Area),而字節碼文件只是 JVM 的一套指令集規范,并不能直接交給底層操作系統去執行,因此需要特定的命令解析器執行引擎(Execution Engine),將字節碼翻譯成底層系統指令,再交由 CPU 去執行,而這個過程中需要調用其他語言的本地庫接口(Native Interface)來實現整個程序的功能。

跑偏了,我們繼續回答上一個問題,既然你說你了解了,你也回答了都有哪些內部結構了,是不是就該說說這些內容是干啥的了,對,沒錯,就是這么回答。

  • 程序計數器:記錄線程執行的位置,方便線程切換后再次執行
  • 虛擬機棧(Stack):每個線程在創建時都會創建一個虛擬機棧,其內部保存一個個的棧幀(Stack Frame),對應著一次次的 Java 方法調用
  • 本地方法棧:是為了執行native方法所服務的

說完這個,沒啥事別停頓,如果你停頓了,這時候面試官很有可能接著去問你棧的一些特性,你本身是想說垃圾回收機制的,總不能被帶跑偏吧,所以,繼續往下說。

  • 方法區 :線程共享,存儲已經被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等等

最后我們再說堆(Heap)

堆是 JVM 中最主要的區域了,因為堆(Heap)是 Java 虛擬機所管理的內存中最大的一塊。

唯一目的就是儲存對象實例和數組(JDK7 已把字符串常量池和類靜態變量移動到 Java 堆),幾乎所有的對象實例都會存儲在堆中分配。

但是呢,隨著 JIT 編譯器發展,逃逸分析、棧上分配、標量替換等優化技術導致并不是所有對象都會在堆上分配。

這時候,一般面試官都會開始提問了,就會讓你具體的說說堆內存。

Java Heap 堆

Java 堆是垃圾收集器管理的主要區域。堆內存分為新生代 (Young) 和老年代 (Old)

什么是新生代?

主要是用來存放新生的對象。一般占據堆空間的1/3,由于頻繁創建對象,所以新生代會頻繁觸發MinorGC進行垃圾回收。

什么是老年代?

老年代的對象比較穩定,所以MajorGC不會頻繁執行。

那么我們在分別來介紹一下 JVM 的新生代 和 老年代,就這兩個,足夠你和面試官聊上十幾分鐘的內容了。

JVM 的新生代(垃圾回收機制)

新生代分為Eden區、ServivorFrom、ServivorTo三個區。

  • Eden區Java新對象的出生地(如果新創建的對象占用內存很大則直接分配給老年代)。當Eden區內存不夠的時候就會觸發一次MinorGc,對新生代區進行一次垃圾回收。
  • ServivorFrom區上一次GC的幸存者,作為這一次GC的被掃描者。當JVM無法為新建對象分配內存空間的時候(Eden區滿的時候),JVM觸發MinorGc
  • ServivorTo區

保留了一次MinorGc過程中的幸存者。

那么新生代會使用什么樣子的垃圾回收機制呢?

我們每次new對象的時候都會先在新生代的Enden區放著也就是最開始 是這樣子的

然后在Enden用完的時候里面會出現待回收的

然后就來了把存活的對象復制放到Survior1(from)中,待回收的等待給他回收掉 就是這樣的

然后把Enden區清空回收掉

這樣的話 第一次GC就完成了,下面再往下走

當Enden充滿的時候就會再次GC

先是這個樣子的

然后會把 Enden和Survoir1中的內容復制到Survior中,

然后就會把Enden和Survior進行回收

然后從Enden中過去的就相當于次數少的,而從Survior1中過去的就相當于移動了2次

這樣新生代的GC就執行了2次了,

當Enden再次被使用完成的時候,就會從Survior2復制到Survior1中,

接下來是連圖

經過回收之后Surior1就變了,1對象是從Enden直接復制過來的,2對象是Enden-->Survior2-->Survior1 ,3對象則是從Enden-->Surivior1-->Survior2-->Survior1 復制過來的,這樣一步一步的執行下去的時候,就是新生代的GC。

這就是新生代采用的 GC ,如果你需要給面試官解釋,那么你就得熟練的記住這個圖,為什么這么說,因為只有你掌握了這個圖,那么你絕對會把這個復制算法給面試官講述的明明白白。

既然我們都知道了這個復制算法了,那么他到底有什么缺點呢?

  • 堆利用效率低 這是最明顯的,空間都被劈成兩半了,一次永遠只能用一半就得搬家
  • 遞歸調用 在對子對象進行復制時,使用了遞歸方法,可能導致棧溢出

但是我們也得吹一下復制算法的牛逼的地方呀。

吞吐量高所謂吞吐量就是搜索活動對象的時間比上搜索堆時間,越高說明你的有效搜索占比越高,不難看出,我們都是從根開始,搜索的全部是活動對象,并沒有浪費時間去搜索垃圾對象。這個優勢在堆越大的場景下越明顯。

沒有碎片

在將活動對象復制到To空間時,他們都是緊挨著的,然后清空From時全部清空,完全沒有碎片的可能。

這也是新生代使用的垃圾回收的算法。

JVM 的老年代(垃圾回收機制)

老年代的垃圾回收機制,采用的則是和新生代不一樣的方式,有些人稱之為FullGC,而FullGC出現的原因則是:在新生代如果說存在的對象或者說新創建 出來的對象由于某些原因需要移動到老年代中,但是老年代中壓根就沒有這么大的內存空間去容納這個對象, 那么就會引發一次FullGC,如果在執行完FullGC之后,還是沒有辦法給這些對象分配內存,那么涼了,該拋出異常了,異常類型就是OutOfMemoryError。

而FullGC使用的是和MinorGC不一樣的算法,它使用的是標記清除算法,聽名字,挺好理解的,來波圖示解析一波。深入了解JVM一書中的圖示是這個樣子的,

圖示是不是看著也挺明確,先標記,然后在刪除。

  • 標記(Mark)過程:找到所有的可以訪問的對象,做個指定的標記。
  • 清除(Swep)過程:遍歷堆內存,把未標記的對象進行一個回收。

在了解了這個之后,我們還得說一個概念,那就是GC Root,Root我們可以理解成一個根節點就像這個樣子

上圖中的a,b,c,d,就是活著的對象,如果說存在這引用,比如說b引用的a,那么a他就是屬于活著的對象。當我們老年代內存區中的有效的內存空間不夠的時候,那么這時候整個世界都要安靜下來了(stop the world),這時候就要開始準備進行垃圾回收了。

  • 標記:遍歷所有的GC Roots,然后將所有GC Roots可達的對象標記為存活的對象。就是我們圖中所標記的a,b,c,d.?清除:清除的過程將遍歷堆中所有的對象,將沒有標記的對象全部清除掉。也就是說,如果內存不夠,GC線程就會被觸發然后將程序暫停,隨后將依舊存活的對象標記一遍,最后再將堆中所有沒被標記的對象全部清除掉,接下來便讓程序繼續恢復運行。

流程圖就像這個樣子的 初始下的老年代中的對象狀態

這時候都是沒有被標記的狀態,接下來內存不夠,GC線程停止,開始進行標記了

按照根節點開始遍歷 標記的abcdeh都是存活的對象,接下來開始標記。

接下來就是清除數據了

清楚完成之后還有就是把標記去除掉,可以下次進行標記清除的時候繼續清除

其實這個阿粉的老讀者肯定看過,因為很早之前阿粉就畫出過這個圖。

這樣標記清除就執行完畢了。

這時候不吹不黑,肯定會有優缺點,不然為啥不采用其他的方法呢?畢竟 JVM 肯定是會選擇最適合自己的方式來進行 GC 的。

缺點清除后的堆內存由于空間不連續,即內存碎片化,若下一次需要分配對象的內存大于碎片空間,這樣會提前觸發GC,當提前觸發的GC回收后,空間還是不足就會出現OOM等錯誤。

時間問題:由于分為兩個過程(標記、清除),當堆內可回收對象較多時,該算法需要進行大量的標記與清除,這里就產生一個問題,隨著可回收對象的的增多,標記和清除的效率就會下降;再者由于空間不連續導致每次再次分配都要遍歷空閑列表。

有點

實現簡單,與保守式GC算法兼容 這阿粉真的說不上他其他的優點了,除了能夠解決引用計數算法帶來的不能清除循環引用的問題外,阿粉實在不知道了。

關于 JVM 的知識要點,你學會了么?

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2019-12-23 15:17:21

JVM結構

2021-12-25 22:31:10

MarkWord面試synchronize

2021-11-08 09:18:01

CAS面試場景

2021-12-16 18:38:13

面試Synchronize

2021-12-02 18:20:25

算法垃圾回收

2023-06-07 08:08:43

JVM內存模型

2021-12-06 11:03:57

JVM性能調優

2024-03-25 11:03:38

Vue修飾符lazy

2022-01-05 08:56:20

Vue修飾符面試

2010-08-10 16:21:48

面試薪資

2016-03-02 15:13:54

面試開發者問題

2024-03-13 13:39:21

2012-08-20 14:09:29

面試

2023-09-12 11:38:18

2015-07-03 11:19:43

火車WiFi

2024-03-28 08:43:42

webpack代碼true?

2010-10-25 10:48:22

面試

2019-09-12 10:14:36

技術研發面試

2021-07-14 07:21:57

JVM運行數據

2010-08-09 16:30:53

面試
點贊
收藏

51CTO技術棧公眾號

gogo亚洲高清大胆美女人体| 国产精品网址在线| 精品一区二区久久久久久久网站| 蜜桃久久精品成人无码av| 国产jzjzjz丝袜老师水多| 亚洲伊人春色| 图片区小说区国产精品视频| 成人天堂噜噜噜| 三区四区在线观看| 欧美xxx性| 99视频有精品| 午夜免费日韩视频| 91成人在线观看喷潮蘑菇| 免费高清在线观看| 精品国精品国产自在久国产应用| 精品欧美激情精品一区| 国产一区二区高清视频| 久久人人爽人人爽人人| 一区二区三区在线免费看 | 97se亚洲综合| 伊人久久大香线蕉av一区| 国产一级生活片| 91精品国产一区二区在线观看| 久久久午夜精品理论片中文字幕| 性色av一区二区三区在线观看| 国产探花视频在线播放| 精品综合久久88少妇激情| 亚洲国产成人av好男人在线观看| 亚洲一区二区中文字幕| 欧美老熟妇一区二区三区| 国产电影一区| 亚洲主播在线播放| 国产美女99p| 欧美在线观看不卡| 国产91一区| 欧美色视频在线| 国产一二三四五| 午夜精品久久久久久久99老熟妇 | 日本熟妇成熟毛茸茸| 波多野结衣在线一区二区| 午夜精品在线视频一区| 久久99国产精品| 久久久久久亚洲av无码专区| 日韩黄色大片| 91精品国产91久久综合桃花| 少妇大叫太大太粗太爽了a片小说| 亚洲av无码乱码在线观看性色| 国产精品二区影院| 亚洲欧美精品一区二区| 成人午夜激情av| 国产在线高清视频| 成人国产精品免费网站| 国产999在线| 顶级黑人搡bbw搡bbbb搡| 一本一道久久a久久| 欧美精品一卡两卡| 日本中文字幕亚洲| 粉嫩一区二区三区国产精品| 国产麻豆午夜三级精品| 91精品国产乱码久久久久久久久| 国产综合精品在线| 视频在线观看免费影院欧美meiju| 精品久久久久久亚洲精品| 黄色一级片黄色| 9765激情中文在线| 国产精品人人做人人爽人人添 | 国产乱论精品| 欧美日韩综合不卡| 日本黄大片一区二区三区| 成人免费一区二区三区牛牛| 亚洲国产精品传媒在线观看| 国产精品xxx在线观看www| 糖心vlog精品一区二区| 99人久久精品视频最新地址| 久热精品在线视频| 人妻精品久久久久中文| 久久国产精品亚洲人一区二区三区| 在线视频欧美日韩| 日本三级日本三级日本三级极| 在线一区视频观看| 婷婷成人激情在线网| 国内自拍在线观看| 欧美人体视频xxxxx| 中文字幕欧美日本乱码一线二线| 亚洲在线不卡| 裸体xxxx视频在线| jlzzjlzz亚洲日本少妇| 欧美一区二区综合| 色视频在线观看免费| 成人听书哪个软件好| 亚洲aⅴ男人的天堂在线观看| 精品久久久无码中文字幕| 99久久精品国产一区二区三区| 亚洲xxxxx| 午夜18视频在线观看| 成人一级片在线观看| 欧美精品七区| 亚州av在线播放| 国产午夜精品理论片a级大结局| 国产精品一 二 三| 高清中文字幕一区二区三区| 亚洲人被黑人高潮完整版| 亚洲精品日韩精品| 国产精品久久一区二区三区不卡| 1区2区3区国产精品| 亚洲一区综合| 男人的天堂免费在线视频| 亚洲国产精品久久一线不卡| 久久久久免费精品| 日韩毛片在线| 亚洲精品在线观看视频| 国产精品入口麻豆| 久久成人福利| 久久久www成人免费精品| 操她视频在线观看| 香蕉综合视频| 欧美成人免费网| 国产乱国产乱老熟300| 中文字幕一区二区三区在线视频 | 精品卡一卡二卡三卡四在线| 91丨porny丨九色| 色悠久久久久综合先锋影音下载| 国产偷亚洲偷欧美偷精品| 三上悠亚ssⅰn939无码播放| 欧美猛男同性videos| 九色精品免费永久在线| 久久久久久久久久久久久久久久久| 视频一区中文字幕国产| 国产精品看片资源| 97人妻精品一区二区三区| 国产中文字幕一区| 精品国产一区二区三区四区精华| av在线官网| 亚洲va中文字幕| 亚洲国产午夜精品| 果冻天美麻豆一区二区国产| 日韩天堂在线视频| 久草福利资源在线观看| 国产精品夜夜夜| 国产精品影院在线观看| 黄色片在线免费观看| 亚洲丝袜精品丝袜在线| 超碰在线97免费| 精品日韩一区| 国产精品久久色| 岛国在线视频| 欧美偷拍一区二区| 成年人看片网站| 中文视频一区| 99精彩视频| 国产中文字幕在线视频| 欧美视频在线免费看| 日韩av在线中文| 日韩精品诱惑一区?区三区| 国产精品爱啪在线线免费观看| 91久久久久久久久久久久| 风流少妇一区二区| 神马影院一区二区三区| 在线观看操人| 欧洲精品一区二区| 国产原创剧情av| 国产深夜精品| 日本不卡久久| 日韩黄色三级| 亚洲精品视频久久| 99精品在线播放| 久久精品视频在线免费观看| 日本激情视频在线| 婷婷亚洲五月| 国产精品吊钟奶在线| av电影在线观看网址| 午夜精品福利一区二区三区av | 欧美裸体xxxx极品少妇| 欧美 日韩 国产 成人 在线| 中文字幕va一区二区三区| 中文字幕 91| 影音先锋日韩在线| 狠狠干一区二区| 日韩国产网站| 欧美巨乳在线观看| 色就是色亚洲色图| 欧美日韩久久久一区| 亚洲国产欧美视频| 欧美日本一区二区高清播放视频| 国产精品无码专区在线观看| 精产国品自在线www| 精品av综合导航| 亚洲精品一区二区二区| 一区二区三区精品在线观看| 久久人人爽人人人人片| 欧美96在线丨欧| 91精品视频在线看| 天堂中文а√在线| 欧美亚洲一区二区在线| 日本aⅴ在线观看| 91麻豆高清视频| 欧洲黄色一级视频| 黄色美女久久久| 国产精品久久久999| 人人澡人人添人人爽一区二区| 亚洲欧洲自拍偷拍| av图片在线观看| 久久久精品免费网站| gogo亚洲国模私拍人体| 久久婷婷一区| 农民人伦一区二区三区| 999国产精品视频| 成人av电影天堂| 色老头在线一区二区三区| 久久香蕉国产线看观看网| 欧美视频综合| 精品成人一区二区三区| 国产精品国产三级国产aⅴ| 日韩欧美亚洲一二三区| 欧美精品99久久久| 国产精品的网站| 男生操女生视频在线观看| 99久久婷婷国产综合精品电影√| 久久久久久国产精品一区| 欧美激情精品| 国模精品视频一区二区| 深夜影院在线观看| 欧美综合天天夜夜久久| 国产成人无码精品久久久久| 99精品欧美一区二区蜜桃免费 | 米仓穗香在线观看| 免费观看性欧美大片无片| 国产精品免费看久久久香蕉| 天堂√8在线中文| 一区二区在线视频播放| 国产精品亚洲lv粉色| 欧美亚州韩日在线看免费版国语版| 国产成人无码精品久久久久| 亚洲在线成人精品| 在线观看成人毛片| 亚洲欧美一区二区三区极速播放| 一级在线观看视频| 久久精品欧美日韩| 中文字幕人妻一区二区| 久久99热国产| 成人性生活视频免费看| 亚洲一级二级| 深夜福利成人| 国产精品一在线观看| 亚洲一区国产精品| 精品国产一区二区三区2021| 成人精品久久av网站| 中文成人在线| 亚洲一区二区三区久久| 日韩免费高清视频网站| 成人在线观看av| 成人另类视频| 国产伦视频一区二区三区| 老牛国内精品亚洲成av人片| 精品欧美一区二区久久久伦| 婷婷亚洲精品| 92看片淫黄大片看国产片| 激情视频亚洲| 97神马电影| 国产亚洲精品美女久久 | 国产a久久精品一区二区三区| 欧美久久久久久| 成人精品影院| 久久99精品久久久久久青青日本| 九色丨蝌蚪丨成人| 日本亚洲导航| 亚洲精品国产首次亮相| 香港三级日本三级a视频| 最新日韩在线| 免费观看国产视频在线| 韩国自拍一区| 免费观看精品视频| 在线欧美一区| 日韩a在线播放| 久久精品国产99国产精品| 国产a级一级片| 欧美96一区二区免费视频| 国产人妻777人伦精品hd| 91精品婷婷色在线观看| 91动漫在线看| 欧美精品激情| 成年人视频观看| 美洲天堂一区二卡三卡四卡视频| 国产又粗又猛大又黄又爽| 青青草国产成人av片免费| 国产成人精品视频免费看| 日本最新不卡在线| 在线观看欧美一区二区| 91麻豆精东视频| 丝袜美腿小色网| 欧美日韩在线看| 国产精品嫩草影院精东| 亚洲精品www久久久| 成人毛片在线精品国产| 91精品国产色综合久久不卡电影 | 99视频精品免费视频| 欧美激情视频二区| 亚洲超碰精品一区二区| 91在线精品入口| 亚洲老头老太hd| 性欧美ⅴideo另类hd| 欧美大片在线免费观看| 最新超碰在线| 欧美专区在线观看| 中文在线资源| 5g国产欧美日韩视频| 女优一区二区三区| www.av91| 狠狠网亚洲精品| 三年中文在线观看免费大全中国| av午夜一区麻豆| 印度午夜性春猛xxx交| 在线观看日韩高清av| 色一情一乱一区二区三区| 日韩黄在线观看| 日韩精品系列| 欧美激情欧美激情| 亚洲一区二区小说| 日日骚一区二区网站| 999亚洲国产精| 稀缺小u女呦精品呦| 亚洲精品亚洲人成人网在线播放| 亚洲色婷婷一区二区三区| 欧美午夜精品一区二区蜜桃 | 成人不卡免费av| 国产一区二区视频在线观看免费| 欧美性做爰猛烈叫床潮| 视频二区在线| 97超碰国产精品女人人人爽 | 麻豆疯狂做受xxxx高潮视频| 欧美色视频一区| 国产美女视频一区二区三区| **欧美日韩vr在线| 欧美挤奶吃奶水xxxxx| 欧美日韩国产综合在线| 亚洲三级毛片| 在线播放av网址| 国产亚洲人成网站| 黄色在线视频网址| 精品亚洲国产视频| 女人让男人操自己视频在线观看| 91成人理论电影| 中文无码久久精品| 黄色三级视频在线播放| 亚洲日本一区二区三区| 国产熟女一区二区三区四区| 亚洲国产成人久久综合| 福利在线观看| 国产精品扒开腿做爽爽爽的视频| 你微笑时很美电视剧整集高清不卡| 男人操女人免费软件| 久久久久久亚洲综合影院红桃| 日本中文字幕在线| 国产亚洲成av人片在线观看桃| 亚洲羞羞网站| 成人av蜜桃| 亚洲精品1区| 毛茸茸多毛bbb毛多视频| 日韩欧美在线视频日韩欧美在线视频| 日韩精品视频在线观看一区二区三区| 日韩免费观看高清| 成人羞羞网站| 日韩欧美理论片| 亚洲国产sm捆绑调教视频| 亚洲欧洲综合在线| 国产精品第一视频| 午夜精品毛片| 波多野结衣办公室双飞| 欧美视频在线观看免费网址| 国产黄色片在线观看| 成人情趣片在线观看免费| 狠狠88综合久久久久综合网| 人妻少妇精品视频一区二区三区| 日本黄色一区二区| 天天综合在线视频| 青青青国产精品一区二区| 日本一区二区在线看| 国产chinesehd精品露脸| 狠狠躁夜夜躁人人躁婷婷91| jzzjzzjzz亚洲成熟少妇| 91a在线视频| 久久国产中文字幕| 性xxxxxxxxx| 91国偷自产一区二区三区观看| 欧美成人性生活视频| 国产伦一区二区三区色一情| 奇米综合一区二区三区精品视频| 免费在线黄色网| 日韩电影中文字幕在线观看| 国产麻豆一区| 性欧美精品一区二区三区在线播放| 激情综合一区二区三区| 国产成人无码精品久久久久| 俺去了亚洲欧美日韩| 欧美自拍一区| 992kp免费看片| 色狠狠桃花综合| 狂野欧美激情性xxxx欧美| 亚洲精品免费在线看| 99精品黄色片免费大全|