精品欧美一区二区三区在线观看 _久久久久国色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一视觉盛宴| 少妇一级淫片免费看| 久久久久一区| 久久久国产精彩视频美女艺术照福利 | 亚洲制服中文字幕| 成入视频在线观看| 国产精品乱人伦中文| 国产二区一区| 中文字幕在线观看第二页| 亚洲性视频h| 中文字幕久久亚洲| 老司机午夜免费福利| 欧美黄页免费| 亚洲成人免费在线观看| 一本一本久久a久久精品综合妖精| 韩国av免费在线观看| 免费人成在线不卡| 97超视频免费观看| 欧美卡一卡二卡三| 欧美视频网址| 亚洲精品美女在线| 日本一区二区三区在线免费观看| 麻豆精品蜜桃| 欧美性猛交xxxx富婆弯腰| 国产a级黄色大片| 1769视频在线播放免费观看| 久久美女高清视频| 99国精产品一二二线| 亚洲天堂视频网| 久久久久久一区二区| 欧美激情高清视频| 天天综合天天做| 日韩欧美一区二区三区在线视频| 亚洲精品97久久| 特黄特色免费视频| 精品久久亚洲| 欧美日韩高清在线| 亚洲另类第一页| 成人网ww555视频免费看| 欧美午夜影院在线视频| 日本www在线视频| 国产黄色大片在线观看| 亚洲综合精品自拍| 国产 欧美 日本| 性欧美videoshd高清| 亚洲女人的天堂| 丰满女人性猛交| 国产黄网站在线观看| 中文字幕一区在线观看| 亚洲午夜精品一区二区三区| 在线免费看黄网站| 国产精品污www在线观看| 日韩精彩视频| 不卡在线视频| 亚洲欧洲一区二区在线播放| 精品一区二区成人免费视频 | 色呦色呦色精品| 少妇高潮一区二区三区99| 欧美日韩中文字幕一区二区| www.亚洲高清| 国产精品美女久久久久人| 日韩亚洲欧美成人一区| 99riav国产精品视频| 亚洲天堂av资源在线观看| 日韩欧美成人一区| 亚洲av成人片无码| 亚洲品质自拍| 在线观看视频99| 日韩高清dvd碟片| 国产精品地址| 欧美影院在线播放| 一区精品在线观看| 国产美女在线观看一区| 懂色中文一区二区三区在线视频| 人妻妺妺窝人体色www聚色窝| 91亚洲大成网污www| 欧洲精品久久| gogo在线观看| 精品magnet| 亚洲这里只有精品| 日韩第一区第二区| 亚洲男人7777| 三级在线观看免费大全| 亚洲麻豆视频| 国产精品夜间视频香蕉| 性欧美18一19性猛交| 91免费观看视频在线| 亚洲高清乱码| а√在线中文网新版地址在线| 在线观看成人小视频| 亚洲精品无码久久久久久久| 青青操综合网| 日韩一区二区三区在线播放| 亚洲综合一二三| 麻豆成人91精品二区三区| 国产精品久久久久免费| av资源种子在线观看| 亚洲国产综合色| 不卡的在线视频| 亚洲人成精品久久久| 欧美成人免费全部观看天天性色| 国产尤物在线视频| 国产精品一二三四区| 欧洲av一区| 理论片午夜视频在线观看| 91精品啪在线观看国产60岁| 我和岳m愉情xxxⅹ视频| 欧美午夜一区二区福利视频| 国产欧美日韩高清| 深夜福利在线观看直播| 亚洲日本va在线观看| 日韩av播放器| 欧美男人操女人视频| 欧美成人免费小视频| 久久人人97超碰人人澡爱香蕉| 亚洲最大成人在线观看| 久久久久影视| 欧美日韩国产va另类| 伊人成人在线观看| 99综合电影在线视频| 久久免费一级片| 先锋影音一区二区| 在线精品国产成人综合| 日韩精品成人免费观看视频| av毛片久久久久**hd| 8x8ⅹ国产精品一区二区二区| 韩国精品主播一区二区在线观看| 日韩电影免费观看中文字幕 | 狂野欧美性猛交xxxxx视频| 欧美三级免费观看| 久久久久亚洲AV成人网人人小说| 久久裸体网站| 国产精品第二页| 四虎成人在线观看| 欧美绝顶高潮抽搐喷水合集| 不卡视频在线看| 四虎一区二区| 欧美一区久久久| 亚洲美女动态图120秒| 国产对白videos麻豆高潮| 国产精品中文欧美| 激情五月五月婷婷| 亚洲日日夜夜| 久久久91精品国产| 国产又大又黑又粗| 中文字幕亚洲区| 性欧美1819| 99久久激情| 91精品在线国产| 国产激情小视频在线| 日韩一区二区三区观看| 美女的奶胸大爽爽大片| 国产一区二区91| 久久中文字幕电影| 国产不卡一区二区在线观看| xvideos国产在线视频| 欧美一区二区三区免费在线看| 成人性生活毛片| 国产乱子伦视频一区二区三区| 国内自拍中文字幕| 精品久久97| 日韩免费在线观看视频| 99re热久久这里只有精品34| 欧美高清视频不卡网| 欧美精品xxxxx| www.日韩在线| 久久午夜夜伦鲁鲁一区二区| 色婷婷一区二区三区| 亚洲一区二区三区乱码aⅴ| 性欧美高清come| 日韩成人小视频| 真实新婚偷拍xxxxx| 亚洲丝袜自拍清纯另类| 日本一级大毛片a一| 亚洲综合三区| 一区二区三区四区视频在线观看 | 国产成人一区二区三区| 久草中文在线观看| 亚洲第一区第二区| 五月婷婷激情视频| 亚洲丝袜另类动漫二区| 黄色片视频免费观看| 蜜芽一区二区三区| 亚洲色成人www永久在线观看| 亚洲区小说区图片区qvod按摩| 国产精品入口日韩视频大尺度| av大片在线| 日韩大片在线观看视频| 国产原创中文av| 激情成人中文字幕| 26uuu成人网| 久久综合九色综合欧美98| 欧美xxxxxbbbbb| 国产视频一区三区| 佐佐木明希av| 在线视频亚洲专区| 99在线观看视频| 2019年精品视频自拍| 97色在线视频| 麻豆视频在线| 亚洲日本中文字幕| 可以免费看毛片的网站| 欧美剧在线免费观看网站| 成人免费视频毛片| 亚洲一区精品在线| 亚洲熟女少妇一区二区| 99久久精品免费看国产 | 不卡av免费在线观看| 色播五月激情五月| 亚洲一区黄色| 国产91视频一区| 亚洲成人tv| 手机在线观看国产精品| 日韩极品在线| 成人av男人的天堂| 国产va免费精品观看精品| 国产v综合ⅴ日韩v欧美大片| ****av在线网毛片| 久久99久久亚洲国产| 色网站免费在线观看| 亚洲人成77777在线观看网| 狠狠综合久久av一区二区| 欧美一区二区日韩| 一级淫片免费看| 欧美视频精品在线| 波多野结衣小视频| 欧美日韩一二三四五区| 国产第一页第二页| 亚洲综合一区二区三区| 欧美性猛交xxxxx少妇| 日韩久久一区二区| 国产男女猛烈无遮挡在线喷水| 国产精品网站在线| 超薄肉色丝袜一二三| 国产性天天综合网| 精品国产成人亚洲午夜福利| 久久久久国产成人精品亚洲午夜| 影音先锋黄色资源| 91亚洲国产成人精品一区二区三| aaaaaav| 99久久免费视频.com| 亚洲av无码一区二区三区网址| 波多野结衣一区二区三区| 中文字幕在线视频播放| 99re视频精品| 国产麻豆天美果冻无码视频| 久久影院视频免费| 欧美 日韩 国产 成人 在线观看| 久久精品一区八戒影视| xxxx日本黄色| 国产精品视频线看| 91免费公开视频| 亚洲综合另类小说| 欧美在线观看不卡| 日本韩国一区二区三区视频| a片在线免费观看| 欧美日韩国产一级二级| 国产口爆吞精一区二区| 日韩欧美国产高清| 天天干天天爽天天操| 亚洲视频网站在线观看| 91精品国产91久久久久游泳池 | 最新的欧美黄色| 高清全集视频免费在线| 国模精品系列视频| 中文日产幕无线码一区二区| 国产精品久久久久久一区二区| 国产日韩欧美中文在线| 国产丝袜不卡| 成人看的羞羞网站| 真实国产乱子伦对白视频| 国产视频一区免费看| 久久99爱视频| 国产**成人网毛片九色| 亚洲一区二区三区蜜桃| 亚洲欧美综合在线精品| 国产在线一区视频| 91福利视频久久久久| 99在线无码精品入口| 日韩精品中文字幕视频在线| 免费网站免费进入在线| 久久理论片午夜琪琪电影网| 日韩中文视频| 国产精品视频免费观看| 欧美在线电影| 隔壁人妻偷人bd中字| 美腿丝袜一区二区三区| 欧美做受高潮中文字幕| 国产欧美一区二区精品性 | 91久久精品网| 午夜精品久久久久久久99老熟妇| 亚洲欧美激情四射在线日| 成人看av片| 日韩免费在线视频| 在线综合色站| 亚洲一区在线免费| 亚洲永久网站| 中文字幕永久免费| 中文字幕av一区二区三区高| 影音先锋亚洲天堂| 日韩三区在线观看| www黄在线观看| 亚洲97在线观看| 亚洲无线观看| 一本一生久久a久久精品综合蜜| 国产精品嫩草99av在线| 26uuu国产| 国产精品大尺度| 无码一区二区三区| 亚洲精品成a人在线观看| 99福利在线| 91精品一区二区| 日本一二区不卡| 欧美视频免费播放| 不卡一区二区三区四区| 国内外成人在线| 无码毛片aaa在线| 美女精品在线| 欧美性生交xxxxx| 亚洲天堂av老司机| 波多野结衣二区三区| 亚洲国产精品成人一区二区| 成人黄视频在线观看| 国产精品自产拍在线观看| 国产亚洲一区| 国产男女在线观看| 91小视频在线观看| 日产精品久久久久| 精品国产免费人成电影在线观看四季| 国产盗摄在线观看| 91久久久久久久久| 99久久激情| 色噜噜狠狠一区二区三区狼国成人| 欧美激情中文不卡| 糖心vlog精品一区二区| 在线观看成人黄色| 日韩色淫视频| 亚洲一卡二卡| 精品一区二区三区影院在线午夜 | 国产校园另类小说区| 中文字幕国产在线观看| 国产视频精品自拍| 2022成人影院| 日韩啊v在线| 久久国产精品色婷婷| 手机在线免费看片| 日韩一区二区三区视频在线观看| av免费看在线| 国产精品乱码| 国产精品久久久免费| 91精彩刺激对白露脸偷拍| 91福利国产成人精品照片| 二区三区在线| 成人在线精品视频| 欧美特黄一区| 精品人妻一区二区三区日产乱码卜| 亚洲动漫第一页| 亚洲欧美强伦一区二区| 97精品国产aⅴ7777| 欧美日韩破处| 欧美在线观看成人| 久久精品在这里| 中文字幕乱码在线观看| 久久精品视频网站| 盗摄牛牛av影视一区二区| 欧美 日韩 激情| 国产女人18毛片水真多成人如厕| 91精品国产乱码久久久| 国产久卡久卡久卡久卡视频精品| 久久爱一区二区| 91精品国产综合久久福利 | 国产欧美日韩三级| 国产在成人精品线拍偷自揄拍| 精品中文字幕乱| 日韩大胆成人| 精品久久久99| 亚洲丰满少妇videoshd| 国产对白叫床清晰在线播放| 91网站在线免费观看| 在线亚洲伦理| 永久av免费网站| 亚洲第一色中文字幕| 国产成+人+综合+亚洲欧美| a天堂资源在线观看| 国产无人区一区二区三区| 国产免费一区二区三区最新不卡 | 国产午夜在线播放| 色偷偷噜噜噜亚洲男人| 国产成人高清精品免费5388| 国产成人手机视频| 亚洲午夜久久久久久久久电影网 | 亚洲高清视频在线| 95在线视频| 久久综合狠狠综合久久综青草| 国内精品免费在线观看| 一级黄色av片| 国内精久久久久久久久久人| 国产精品精品|