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

什么是JVM?一文簡談運行機制及基本原理

云計算 虛擬化
JVM也充當著一個翻譯官的角色,我們編寫出的Java程序,是不能夠被操作系統所直接識別的,這時候JVM的作用就體現出來了,它負責把我們的程序翻譯給系統“聽”,告訴它我們的程序需要做什么操作。

[[326862]]

 JVM的基礎概念

JVM的中文名稱叫Java虛擬機,它是由軟件技術模擬出計算機運行的一個虛擬的計算機。

JVM也充當著一個翻譯官的角色,我們編寫出的Java程序,是不能夠被操作系統所直接識別的,這時候JVM的作用就體現出來了,它負責把我們的程序翻譯給系統“聽”,告訴它我們的程序需要做什么操作。

我們都知道Java的程序需要經過編譯后,產生.Class文件,JVM才能識別并運行它,JVM針對每個操作系統開發其對應的解釋器,所以只要其操作系統有對應版本的JVM,那么這份Java編譯后的代碼就能夠運行起來,這就是Java能一次編譯,到處運行的原因。

JVM的生命周期

JVM在Java程序開始執行的時候,它才運行,程序結束的時它就停止。

一個Java程序會開啟一個JVM進程,如果一臺機器上運行三個程序,那么就會有三個運行中的JVM進程。

JVM中的線程分為兩種:守護線程和普通線程

守護線程是JVM自己使用的線程,比如垃圾回收(GC)就是一個守護線程。

普通線程一般是Java程序的線程,只要JVM中有普通線程在執行,那么JVM就不會停止。

權限足夠的話,可以調用exit()方法終止程序。

JVM的結構體系

 

什么是JVM?一文簡談運行機制及基本原理

 

JVM的啟動過程

1、JVM的裝入環境和配置

在學習這個之前,我們需要了解一件事情,就是JDK和JRE的區別。

JDK是面向開發人員使用的SDK,它提供了Java的開發環境和運行環境,JDK中包含了JRE。

JRE是Java的運行環境,是面向所有Java程序的使用者,包括開發者。

JRE = 運行環境 = JVM。

如果安裝了JDK,會發現電腦中有兩套JRE,一套位于/Java/jre.../下,一套位于/Java/jdk.../jre下。那么問題來了,一臺機器上有兩套以上JRE,誰來決定運行那一套呢?這個任務就落到java.exe身上,java.exe的任務就是找到合適的JRE來運行java程序。

java.exe按照以下的順序來選擇JRE:

  1. 自己目錄下有沒有JRE
  2. 父目錄下有沒有JRE
  3. 查詢注冊表: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"當前JRE版本號"\JavaHome

這幾步的主要核心是為了找到JVM的絕對路徑。

jvm.cfg的路徑為:JRE路徑\lib"CPU架構"\jvm.fig

jvm.cfg的內容大致如下:

  • -client KNOWN
  • -server KNOWN
  • -hotspot ALIASED_TO -client
  • -classic WARN
  • -native ERROR
  • -green ERROR

KNOWN 表示存在 、IGNORE 表示不存在 、ALIASED_TO 表示給別的JVM去一個別名

WARN 表示不存在時找一個替代 、ERROR 表示不存在拋出異常

2、裝載JVM

通過第一步找到JVM的路徑后,Java.exe通過LoadJavaVM來裝入JVM文件。

LoadLibrary裝載JVM動態連接庫,然后把JVM中的到處函數JNI_CreateJavaVM和JNI_GetDefaultJavaVMIntArgs 掛接到InvocationFunction 變量的CreateJavaVM和GetDafaultJavaVMInitArgs 函數指針變量上。JVM的裝載工作完成。

3、初始化JVM,獲得本地調用接口

調用InvocationFunction -> CreateJavaVM也就是JVM中JNI_CreateJavaVM方法獲得JNIEnv結構的實例。

4、運行Java程序

JVM運行Java程序的方式有兩種:jar包 與 Class

運行jar 的時候,Java.exe調用GetMainClassName函數,該函數先獲得JNIEnv實例然后調用JarFileJNIEnv類中getManifest(),從其返回的Manifest對象中取getAttrebutes("Main-Class")的值,即jar 包中文件:META-INF/MANIFEST.MF指定的Main-Class的主類名作為運行的主類。之后main函數會調用Java.c中LoadClass方法裝載該主類(使用JNIEnv實例的FindClass)。

運行Class的時候,main函數直接調用Java.c中的LoadClass方法裝載該類。

Class文件

Class文件由Java編譯器生成,我們創建的.Java文件在經過編譯器后,會變成.Class的文件,這樣才能被JVM所識別并運行。

類加載子系統

類加載子系統也可以稱之為類加載器,JVM默認提供三個類加載器:

1、BootStrap ClassLoader :稱之為啟動類加載器,是最頂層的類加載器,負責加載JDK中的核心類庫,如 rt.jar、resources.jar、charsets.jar等。

2、Extension ClassLoader:稱之為擴展類加載器,負責加載Java的擴展類庫,默認加載$JAVA_HOME中jre/lib/*.jar 或 -Djava.ext.dirs指定目錄下的jar包。

3、App ClassLoader:稱之為系統類加載器,負責加載應用程序classpath目錄下所有jar和class文件。

除了Java默認提供的三個ClassLoader(加載器)之外,我們還可以根據自身需要自定義ClassLoader,自定義ClassLoader必須繼承java.lang.ClassLoader 類。除了BootStrap ClassLoader 之外的另外兩個默認加載器都是繼承自java.lang.ClassLoader 。BootStrap ClassLoader 不是一個普通的Java類,它底層由C++編寫,已嵌入到了JVM的內核當中,當JVM啟動后,BootStrap ClassLoader 也隨之啟動,負責加載完核心類庫后,并構造Extension ClassLoader 和App ClassLoader 類加載器。

類加載器子系統不僅僅負責定位并加載類文件,它還嚴格按照以下步驟做了很多事情:

  • 加載:尋找并導入Class文件的二進制信息2、連接:進行驗證、準備和解析
  • 驗證:確保導入類型的正確性
  • 準備:為類型分配內存并初始化為默認值
  • 解析:將字符引用解析為直接引用
  • 初始化:調用Java代碼,初始化類變量為指定初始值

方法區(Method Area)

在JVM中,類型信息和類靜態變量都保存在方法區中,類型信息是由類加載器在類加載的過程中從類文件中提取出來的信息。

需要注意的一點是,常量池也存放于方法區中。

程序中所有的線程共享一個方法區,所以訪問方法區的信息必須確保線程是安全的。如果有兩個線程同時去加載一個類,那么只能有一個線程被允許去加載這個類,另一個必須等待。

在程序運行時,方法區的大小是可以改變的,程序在運行時可以擴展。

方法區也可以被垃圾回收,但條件非常嚴苛,必須在該類沒有任何引用的情況下

類型信息包括什么?

1、類型的全名(The fully qualified name of the type)

2、類型的父類型全名(除非沒有父類型,或者父類型是java.lang.Object)(The fully qualified name of the typeís direct superclass)

3、該類型是一個類還是接口(class or an interface)(Whether or not the type is a class )

4、類型的修飾符(public,private,protected,static,final,volatile,transient等)(The typeís modifiers)

5、所有父接口全名的列表(An ordered list of the fully qualified names of any direct superinterfaces)

6、類型的字段信息(Field information)

7、類型的方法信息(Method information)

8、所有靜態類變量(非常量)信息(All class (static) variables declared in the type, except constants)

9、一個指向類加載器的引用(A reference to class ClassLoader)

10、一個指向Class類的引用(A reference to class Class)

11、基本類型的常量池(The constant pool for the type)

方法列表(Method Tables)

為了更高效的訪問所有保存在方法區中的數據,在方法區中,除了保存上邊的這些類型信息之外,還有一個為了加快存取速度而設計的數據結構:方法列表。每一個被加載的非抽象類,Java虛擬機都會為他們產生一個方法列表,這個列表中保存了這個類可能調用的所有實例方法的引用,保存那些父類中調用的方法。

Java堆(JVM堆、Heap)

當Java創建一個類的實例對象或者數組時,都在堆中為新的對象分配內存。

虛擬機中只有一個堆,程序中所有的線程都共享它。

堆占用的內存空間是最多的。

堆的存取類型為管道類型,先進先出。

在程序運行中,可以動態的分配堆的內存大小。

堆的內存資源回收是交給JVM GC進行管理的,

Java棧(JVM棧、Stack)

在Java棧中只保存基礎數據類型和自定義對象的引用,注意只是對象的引用而不是對象本身哦,對象是保存在堆區中的。

拓展知識:像String、Integer、Byte、Short、Long、Character、Boolean這六個屬于包裝類型,它們是存放于堆中的。

棧的存取類型為類似于水杯,先進后出。

棧內的數據在超出其作用域后,會被自動釋放掉,它不由JVM GC管理。

每一個線程都包含一個棧區,每個棧中的數據都是私有的,其他棧不能訪問。

每個線程都會建立一個操作棧,每個棧又包含了若干個棧幀,每個棧幀對應著每個方法的每次調用,每個棧幀包含了三部分:

局部變量區(方法內基本類型變量、變量對象指針)

操作數棧區(存放方法執行過程中產生的中間結果)

運行環境區(動態連接、正確的方法返回相關信息、異常捕捉)

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-04-27 19:21:48

HBase原理開源

2020-12-29 07:32:59

Redis 列表數據

2023-04-26 13:48:36

2012-01-12 14:37:34

jQuery

2016-08-17 23:53:29

網絡爬蟲抓取系統

2009-02-24 09:43:00

IP電話原理

2011-11-29 12:17:00

2020-08-20 07:41:52

Git原理版本

2017-09-11 17:16:35

2015-01-19 15:47:02

FCoE一體化

2019-11-28 10:45:28

ZooKeeper源碼分布式

2010-08-20 13:29:33

OFDM

2016-08-18 00:04:09

網絡爬蟲抓取系統服務器

2013-04-07 14:09:55

Android應用基本

2020-03-21 14:57:14

手機定位智能手機APP

2021-02-08 21:40:04

SockmapBPF存儲

2009-12-22 15:39:36

IPPBX技術

2009-06-11 09:56:09

MySQL Repli原理

2011-07-07 14:10:21

Cocoa 內省 hash

2020-12-29 16:55:44

ZooKeeper運維數據結構
點贊
收藏

51CTO技術棧公眾號

色婷婷久久av| av电影在线观看完整版一区二区| 亚洲人成网站777色婷婷| 亚洲成熟丰满熟妇高潮xxxxx| 成人性爱视频在线观看| 国产在线不卡一卡二卡三卡四卡| 欧美激情视频网| 国产 欧美 在线| 伊人久久噜噜噜躁狠狠躁| 狠狠操狠狠色综合网| 在线成人性视频| 四虎精品一区二区三区| 久久成人免费网| 57pao成人国产永久免费| 亚洲熟女毛茸茸| 亚洲+变态+欧美+另类+精品| 欧美精品 国产精品| 国产男女无遮挡| 精精国产xxxx视频在线中文版| 日本一区二区免费在线 | 亚洲黄色免费观看| 自拍视频亚洲| 在线精品播放av| 国产精品久久久免费观看| 9999精品| 欧美日韩一区二区三区高清 | 久久精品99国产精品| 91a在线视频| 国产这里有精品| 日韩欧美字幕| 一区二区三区无码高清视频| 日本一区二区在线免费观看| 亚洲精品午夜| 日韩一区二区三区在线| www.这里只有精品| 成人看片网站| 91国内精品野花午夜精品 | 男人操女人的视频网站| 欧美xxxx中国| 中文字幕亚洲一区二区三区五十路| 亚洲av网址在线| 国产精品chinese在线观看| 91精品国产入口| 亚洲妇熟xx妇色黄蜜桃| 久久婷婷五月综合色丁香| 91传媒视频在线播放| 久久久久久久久久久久久久国产| 在线观看的黄色| 天天影视色香欲综合网老头| 国产综合中文字幕| 国产在线天堂www网在线观看| 亚洲一区二区偷拍精品| 97在线国产视频| av资源在线播放| 五月天激情综合| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 黄毛片在线观看| 精品久久久久久| 99福利在线观看| 电影天堂国产精品| 在线亚洲+欧美+日本专区| 亚洲狼人综合干| 另类一区二区三区| 欧美性感一区二区三区| 亚洲一区日韩精品| 日韩欧美中文字幕在线视频| 欧美一区二区三区不卡| 逼特逼视频在线观看| 精品久久ai电影| 亚洲欧洲偷拍精品| 懂色av粉嫩av浪潮av| 欧美aaaa视频| 久久久综合免费视频| 天堂网一区二区三区| 日日摸夜夜添夜夜添精品视频| 国产精品久久久一区| 一级黄色片在线看| 国产成人午夜视频| 九九九热999| 二人午夜免费观看在线视频| 亚洲免费在线看| 99久久久精品视频| 中文在线а√在线8| 在线一区二区三区做爰视频网站| 在线观看免费不卡av| 国产精品乱战久久久| 亚洲精品www| 国产精品久久久免费看| 亚洲一级电影| 国产精品电影观看| a天堂中文在线观看| 久久综合一区二区| 亚洲av综合色区| 中老年在线免费视频| 欧美一级xxx| 好吊视频在线观看| 欧美视频官网| 国产精品男人的天堂| 亚洲av无码国产精品久久不卡 | 日本少妇aaa| 日韩亚洲国产精品| 国产在线精品自拍| 四虎影视精品成人| 亚洲一区在线看| www.精品在线| 亚洲制服一区| 精品少妇一区二区30p| 少妇又紧又色又爽又刺激视频| 岛国精品在线播放| 伊人久久婷婷色综合98网| 免费成人在线电影| 日韩欧美资源站| 国产真人真事毛片视频| 美女国产一区| 国产精品日韩一区二区三区 | 国产精品扒开腿爽爽爽视频| 国产1区在线观看| 日韩一区中文字幕| 欧美 日韩 国产 激情| 久久99国产精品久久99大师| 操日韩av在线电影| 在线观看国产成人| 国产校园另类小说区| 欧美成人高潮一二区在线看| 日韩在线观看中文字幕| 久久精品在线播放| 啪啪小视频网站| 久久久亚洲精品一区二区三区| 久草免费福利在线| 久久中文字幕一区二区| 色婷婷久久一区二区| 中文字幕+乱码+中文乱码91| 久久久99免费| 免费裸体美女网站| 沈樵精品国产成av片| 97在线精品国自产拍中文| 男人的天堂a在线| 亚洲一区二区三区在线播放| 国产大学生av| 极品裸体白嫩激情啪啪国产精品| 亚洲一区中文字幕| 午夜av在线播放| 日韩一卡二卡三卡四卡| 极品盗摄国产盗摄合集| 国产麻豆欧美日韩一区| 国产精品88久久久久久妇女| 韩国三级成人在线| 久精品免费视频| 午夜精品一二三区| 亚洲成人精品影院| av网站免费在线播放| 米奇777在线欧美播放| 欧美日韩亚洲免费| 日韩制服一区| 日韩中文字幕在线看| 国产精品乱码一区二区| 一区二区三区在线观看动漫 | 97人妻精品一区二区三区动漫| 国产精品国产馆在线真实露脸| 亚洲娇小娇小娇小| 亚洲成人精品| 国产91精品一区二区绿帽| a级片在线免费| 亚洲毛片在线观看.| 波多野结衣小视频| 国产精品不卡在线| 色哟哟免费视频| 亚洲日本激情| 视频一区二区精品| 91国产一区| 久久久人成影片一区二区三区观看 | 亚洲人成网站在线播| 中国一级片黄色一级片黄| 中文字幕佐山爱一区二区免费| 一级黄色免费毛片| 国产亚洲午夜| 亚洲国产一区二区精品视频| 国产中文欧美日韩在线| 91国语精品自产拍在线观看性色| 国产高清视频在线| 日韩欧美精品三级| 国产精品21p| 亚洲视频一二三| 亚洲一区二区在线免费| 蜜臀av在线播放一区二区三区 | 国产精品69xx| 国产午夜精品视频| 午夜老司机福利| 色婷婷一区二区三区四区| 尤物在线免费视频| 久久综合av免费| 一级网站在线观看| 久久久久99| www.日本在线视频| 欧美日韩在线播放视频| 国产精品一级久久久| 激情亚洲小说| 欧美亚洲视频在线观看| 成年人网站在线| 亚洲性线免费观看视频成熟| www三级免费| 欧美日韩一区二区在线观看| 亚洲一区欧美在线| 亚洲少妇最新在线视频| 麻豆精品免费视频| 成人丝袜高跟foot| 一级黄色在线播放| 日本欧美在线看| 国产资源在线视频| 午夜电影亚洲| 伊人久久大香线蕉精品 | 日本a级片在线播放| 国产日韩欧美一区二区三区| 国产精品久久久久久久久久久久冷| 国产成人精选| 日韩av电影手机在线观看| 色av手机在线| 日韩一级裸体免费视频| 高清日韩av电影| 亚洲男女性事视频| 天堂av手机版| 精品国产污污免费网站入口| 国产又粗又长又大视频| 在线观看欧美精品| 免费无码国产精品| 欧美视频专区一二在线观看| 日韩av在线播放观看| 亚洲午夜在线电影| 青青草手机在线视频| 亚洲三级在线免费观看| 美女福利视频网| 亚洲国产岛国毛片在线| 中文字幕av久久爽一区| 久久精品一区二区三区不卡牛牛| 无遮挡aaaaa大片免费看| 91在线云播放| 中文字幕在线观看的网站| 99精品久久久久久| 黄色网址在线视频| 97se亚洲国产综合自在线观| 欧美精品欧美极品欧美激情| av色综合久久天堂av综合| 黄色污在线观看| 久久久噜噜噜久久人人看| 一本色道久久综合亚洲精品图片| 久久婷婷色综合| 国产精成人品免费观看| 亚洲国产成人一区二区三区| 国产探花视频在线| 国产精品免费人成网站| 999精品久久久| 亚洲精品少妇30p| 青青青在线视频| 午夜久久福利影院| 无码人妻精品一区二区三区不卡| 亚洲天堂免费| 国产日韩av网站| 久久久久久夜| 男女男精品视频站| 国产综合色精品一区二区三区| 亚洲色图欧美自拍| 国产精品白丝jk黑袜喷水| 国产精品一区二区人妻喷水| 久久综合久久综合久久综合| 亚洲精品国产精品国自| 亚洲九九爱视频| 日操夜操天天操| 欧洲一区在线观看| 精品人妻一区二区三区麻豆91| 精品粉嫩超白一线天av| 色综合www| 国产精品亚洲激情| 国产精品一区三区在线观看| av一区二区三区免费| 欧美aaaaaaaa牛牛影院| 日本视频一区二区不卡| 亚洲色图欧美| 777久久久精品一区二区三区| 日韩精品色哟哟| 久久综合桃花网| 久久这里都是精品| 国产精品国产精品88| 天天影视涩香欲综合网| 中文字幕日本视频| 亚洲第一av在线| 最新国产在线观看| 国产69精品久久久久9999| 成人毛片免费| 国产精品乱码视频| 99久久精品费精品国产| 黄色片视频在线免费观看| 国产黄色91视频| 一区二区三区久久久久| 亚洲国产视频一区| 中文字幕av片| 亚洲国产成人久久| 麻豆免费在线观看| 国产97免费视| youjizz亚洲| 中文字幕综合在线观看| 国产日韩亚洲欧美精品| 五月天婷婷影视| 国产欧美日韩一区二区三区在线观看| 欧美日韩激情在线观看| 欧美视频在线播放| 视频一区二区三区在线看免费看| 久久成人精品一区二区三区| 韩国精品主播一区二区在线观看| 国产精品免费在线| 亚洲综合中文| 亚洲欧美日本一区二区三区| 国产午夜精品福利| 日本熟妇色xxxxx日本免费看| 91精品免费在线| 一区二区三区视频网站| 国产91色在线|| 欧美高清视频看片在线观看| 久久人妻无码一区二区| 精品中文av资源站在线观看| 丰满的亚洲女人毛茸茸| 欧美视频在线观看 亚洲欧| 色欲av永久无码精品无码蜜桃| 久久国产精彩视频| 伊人久久综合网另类网站| 神马影院我不卡午夜| 免费欧美在线| 熟妇高潮精品一区二区三区| 亚洲成精国产精品女| 亚洲黄色小说网| 欧美日韩国产成人| 蜜桃在线一区| 国产人妻人伦精品| 国产伦精品一区二区三区视频青涩| 日本黄色激情视频| 欧美日韩在线播放| 95在线视频| 国产精品一区二区久久久久| 欧美日韩国产一区二区三区不卡| 男女视频一区二区三区| 国产日韩欧美a| 中文在线字幕av| 日韩在线观看免费网站| 国产成人精品一区二区三区免费| 亚洲精品9999| 久久99久久精品欧美| 国产精品国产三级国产传播| 91精品国产一区二区| 天堂8中文在线| 国产精品一区二区欧美黑人喷潮水| 激情视频一区| 91精品人妻一区二区| 欧美性色黄大片| yellow91字幕网在线| 成人av影视在线| 日韩一级在线| 日本xxxxxxxxx18| 欧美日韩久久久| 日本在线视频网址| 精品久久久久久乱码天堂| 久久精品官网| 特级西西人体高清大胆| 欧美一级片在线看| 黄页在线观看免费| 日本一区二区视频| 国内精品视频666| 国产无码精品在线观看| 亚洲色图欧美制服丝袜另类第一页| 97欧美成人| 日本手机在线视频| 欧美国产97人人爽人人喊| 国产视频手机在线观看| 国内精品久久久久伊人av| 九九在线精品| 亚洲国产午夜精品| 精品女厕一区二区三区| 午夜在线小视频| 成人av免费看| 免播放器亚洲一区| 日韩av在线播放观看| 日韩在线观看高清| 久久九九热re6这里有精品| 男女无套免费视频网站动漫| 亚洲精品免费在线| 黄色免费在线播放| 99久久无色码| 日产国产欧美视频一区精品| 久久精品黄色片| 亚洲性xxxx| 都市激情亚洲| 日本美女视频一区| 欧美性jizz18性欧美| 在线网址91| 婷婷久久青草热一区二区| 成人精品鲁一区一区二区| 国产精品露脸视频| 91超碰caoporn97人人| 自拍视频亚洲| 亚洲av毛片基地| 亚洲国产成人精品电影| www.久久久.com|