亚洲精品在线电影-亚洲精品午夜在线观看-亚洲精品网站在线-亚洲精品视频久久久-国产精品深夜福利免费观看

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

當(dāng)前位置:首頁  >  IT問答庫  >  Java基礎(chǔ)知識

JVM模型的介紹一

發(fā)布:java培訓(xùn) 2022-03-16 09:54

JVM模型的介紹一

推薦答案

  Java培訓(xùn)班教程系列分享JVM模型的介紹Java內(nèi)存分配:JVM定義了若干個程序執(zhí)行期間使用的數(shù)據(jù)區(qū)域。這個區(qū)域里的一些數(shù)據(jù)在JVM啟動的時候創(chuàng)建,在JVM退出的時候銷毀。而其他的數(shù)據(jù)依賴于每一個線程,在線程創(chuàng)建時創(chuàng)建,在線程退出時銷毀。

  Java按照內(nèi)存使用區(qū)域可以分為四個部分:堆、棧、方法區(qū)和程序計數(shù)器;其中棧又可以分為兩大部分:Java虛擬機棧和本地方法棧;下面我將通過自己的學(xué)習(xí)與別人總結(jié)的參考見解來介紹下jvm

圖片1

圖片1

  程序計數(shù)器

  程序計數(shù)器是一塊較小的內(nèi)存空間,它被用來記錄當(dāng)前指令執(zhí)行程序的位置,在內(nèi)部通過改變計數(shù)器的位置來確定下一條指令執(zhí)行程序的位置;

  我們知道Java多線程的實質(zhì)是通過線程輪流切換并分配處理執(zhí)行事件來實現(xiàn)的,而在任何一個確定的時刻,一個處理器只會執(zhí)行一個線程中的一條指令。為了能讓線程切換后仍然能恢復(fù)到原來的位置,每個線程都需要有一個獨立的程序計數(shù)器,他們之間互不影響,所以,程序計數(shù)器是線程私有的內(nèi)存區(qū)域

  如果一個線程正在執(zhí)行一個Java方法,那么程序計數(shù)器記錄的就是正在執(zhí)行的虛擬機字節(jié)碼指令的地址;如果正在執(zhí)行一個native方法,那么程序計數(shù)器的值就為空;

  程序計數(shù)器是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域,在四個區(qū)域中只有它不會出現(xiàn)內(nèi)存溢出的情況

  棧之Java虛擬機棧

  Java虛擬機棧描述的是Java方法的內(nèi)存模型;每個方法在被執(zhí)行的同時都會創(chuàng)建一個Java虛擬機棧(棧幀),用于存儲局部變量表、操作棧、動態(tài)鏈接和方法出口等信息,因此Java虛擬機棧也是線程私有的;

  類似于動畫是由一棧一棧的棧幀切換產(chǎn)生的,程序的執(zhí)行也是由棧幀的切換產(chǎn)生的,只是這些棧幀中存放的是方法的局部變量、操作棧、動態(tài)鏈接和方法出口等信息;每一個方法被調(diào)用直至執(zhí)行完成的過程,就是一個棧幀在虛擬機棧中從入棧到出棧的過程;

  對于執(zhí)行引擎來說,只有棧頂?shù)臈怯行У模Q為當(dāng)前棧幀,這個棧幀關(guān)聯(lián)的方法稱為當(dāng)前方法,執(zhí)行引擎所有的字節(jié)碼指令都值針對當(dāng)前棧幀進行操作;

  通常我們所說的變量存儲在棧中是不嚴(yán)謹(jǐn)?shù)模?font face="Calibri">Java虛擬機棧中存放的是對應(yīng)方法的局部變量,而且這些局部變量存放在Java虛擬機中的局部變量表中;對于保存的局部變量分類:Java中的基本數(shù)據(jù)類型變量的值存放在局部變量表,而對于引用類型變量來說,局部變量表只會存放對象的引用,真正的值存放在堆中;

  Java虛擬機是使用局部變量表來完成參數(shù)值到參數(shù)變量表的傳遞過程的,系統(tǒng)不會為局部變量賦予初始值(對于實例變量和類變量都會賦予初始值)

  在Java虛擬機規(guī)范中,對Java虛擬機棧規(guī)定了兩種異常情況:如果線程請求的棧深度大于虛擬機所允許的深度,將拋出StackOverflowError 異常;如果虛擬機棧動態(tài)擴展時無法申請到足夠的內(nèi)存時,會拋出OutOfMemoryError 異常

  以上就是小編介紹的"Java培訓(xùn)班分享的內(nèi)容,希望對大家有幫助,如有疑問還可以點擊進入Java視頻教程進行學(xué)習(xí)。

  Java培訓(xùn)班http://Java.qfedu.com/

最新問答資訊

01 unity用什么編程語言?unity學(xué)習(xí)難度大嗎

學(xué)習(xí) unity 語言
6020 人關(guān)注

02 python容易學(xué)嗎?學(xué)好python有什么好處?

學(xué)習(xí) python 工作 培訓(xùn)
5389 人關(guān)注

03 html是什么語言?html學(xué)習(xí)難嗎?

學(xué)習(xí) html 語言 可以
5062 人關(guān)注

04 c語言難學(xué)嗎?c語言學(xué)好要多久?

語言 技術(shù) 學(xué)習(xí)
4733 人關(guān)注

06 學(xué)好平面設(shè)計要多久?報速成班靠譜嗎?

平面 設(shè)計 學(xué)習(xí) 時間
4238 人關(guān)注

相關(guān)問題

計算機前端和后端區(qū)別,到底該學(xué)哪一個?

互聯(lián)網(wǎng)行業(yè)的發(fā)展速度很快,有關(guān)市場上對于it行業(yè)的人才需求量越...

java和php的區(qū)別是什么?哪一個更難一些?

有很多零基礎(chǔ)的小白想要去學(xué)習(xí)編程技術(shù),那么可以考慮一下java和...

java與java script的區(qū)別有哪些?

相信大多數(shù)同學(xué)對java、java script都不會陌生,二者都是編程語...

java中什么是繼承?

繼承的特點:只需明確一點,java只支持單繼承,不支持多繼承,但...

java byte取值范圍是什么?

同學(xué)您好,java byte取值范圍是什么?針對這個問題可以看看下面的...

javascript和java有什么區(qū)別

1)基于對象和面向?qū)ο螅篔ava是一種真正的面向?qū)ο蟮恼Z言,即使是...

測一測
你知道多少IT梗

主站蜘蛛池模板: 久久亚洲一区二区 | 毛片资源网 | 羞羞影院免费观看网址在线 | 在线视频第一页 | 色播影院性播免费看 | 成人99国产精品一级毛片 | 亚洲国产成人久久一区二区三区 | 久久99精品国产 | 一级免费试看 | 欧美日韩精品一区二区三区不卡 | 国产成人精品男人的天堂下载 | 日本成本人观看免费fc2 | 在线免费黄视频 | 羞羞在线视频 | 国产成人久久精品二区三区牛 | 激情网站网址 | 欧美日韩亚洲国产一区二区三区 | 深爱激情婷婷 | 伊人网在线免费观看 | 国产视频入口 | 亚洲男人天堂2019 | 婷婷九月丁香 | 精品欧美成人高清视频在线观看 | 欧美福利视频 | 最近最新中文字幕在线第一页 | 五月天激情丁香 | 日韩毛片免费视频 | 亚洲高清视频在线 | 亚洲精品欧美日韩 | 亚洲综合网站 | 国产精品视_精品国产免费 一色屋色费精品视频在线看 | 久热re这里只有精品视频 | 五月激情啪啪 | 蜜桃网视频在线蜜桃8477 | 在线看国产人成www免费看下载 | 国产小视频免费观看 | 国产成人高清亚洲一区久久 | 四虎成人免费电影 | 四月婷婷七月婷婷综合 | 最近中文字幕无吗高清免费视频 | 精品久久久久久国产 |