亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JVM加載class文件原理

2019-11-11 04:05:43
字體:
來源:轉載
供稿:網友

前言

學習java、Android也有差不多半年時間了,是時候記錄一下學習過程中的心得和經驗,這篇文章就是簡單描述一下JVM加載class文件的機制。

JVM組成

圖1 JVM組成

Classloader 類加載器,負責查找并裝載Class 文件到內存,最終形成可以被虛擬機直接使用的Java類型Class Area 方法區,在類裝載器加載class文件到內存的過程中,虛擬機會提取其中的類型信息,并將這些信息存儲到方法區。方法區用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。Heap 堆,存儲Java程序創建的類實例。Stack 棧,每當啟動一個新線程時,Java虛擬機都會為它分配一個Java棧。Java棧以幀為單位保存線程的運行狀態。虛擬機只會直接對Java棧執行兩種操作:以幀為單位的壓?;虺鰲!.斁€程調用java方法時,虛擬機壓入一個新的棧幀到該線程的java棧中。當方法返回時,這個棧幀被從java棧中彈出并拋棄。一個棧幀包含一個java方法的調用狀態,它存儲有局部變量表、操作棧、動態鏈接、方法出口等信息。PC Register PC寄存器(程序計數器):一個運行中的Java程序,每當啟動一個新線程時,都會為這個新線程創建一個自己的PC寄存器(程序計數器)。程序計數器的作用可以看做是當前線程所執行的字節碼的行號指示器。字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都需要依賴這個計數器來完成。如果線程正在執行的是一個Java方法,這個計數器記錄的是正在執行的虛擬機字節碼指令的地址;如果正在執行的是Natvie方法,這個計數器值則為空(Undefined)。Native Method Stack 本地方法棧,本地方法棧與虛擬機棧所發揮的作用是非常相似的,其區別不過是虛擬機棧為虛擬機執行Java方法(也就是字節碼)服務,而本地方法棧則是為虛擬機使用到的Native方法服務。任何本地方法接口都會使用某種本地方法棧。當線程調用Java方法時,虛擬機會創建一個新的棧幀并壓入Java棧。然而當它調用的是本地方法時,虛擬機會保持Java棧不變,不再在線程的Java棧中壓入新的幀,虛擬機只是簡單地動態鏈接并直接調用指定的本地方法。如果某個虛擬機實現的本地方法接口是使用C連接模型的話,那么它的本地方法棧就是C棧。execution engine 執行引擎,負責執行字節碼。方法的字節碼是由Java虛擬機的指令序列構成的。每一條指令包含一個單字節的操作碼,后面跟隨0個或多個操作數。執行引擎執行字節碼時,首先取得一個操作碼,如果操作碼有操作數,取得它的操作數。它執行操作碼和跟隨的操作數規定的動作,然后再取得下一個操作碼。這個執行字節碼的過程在線程完成前將一直持續。Native Method interface 本地方法接口,作用是融合不同的編程語言為Java 所用,它的初衷是融合C/C++ 程序,Java 誕生的時候是C/C++ 橫行的時候,要想立足,必須有一個聰明的、睿智的調用C/C++ 程序,于是就在內存中專門開辟了一塊區域處理標記為native 的代碼,它的具體做法是Native Method Stack 中登記native 方法,在Execution Engine 執行時加載native libraies 。目前該方法使用的是越來越少了,除非是與硬件有關的應用,比如通過Java 程序驅動打印機,或者Java 系統管理生產設備,在企業級應用中已經比較少見,因為現在的異構領域間的通信很發達,比如可以使用Socket 通信,也可以使用Web Service 等等,不多做介紹。

Classloader體系結構

Java中的類加載器實質上也是類,功能是把類載入jvm中,值得注意的是jvm的類裝載器并不是一個,而是三個: 1. BootstrapLoader 啟動類裝載器 : 每個Java虛擬機實現都必須有一個啟動類裝載器。它只負責在系統類(核心Java API的class文件)的安裝路徑中查找要裝入的類。這個裝載器的實現由C++ 所撰寫而成,是JVM實現的一部分。 2. ExtClassLoader 擴展類裝載器:負責除核心Java API以外的其它class文件的裝載。例如、用于安裝或下載標準擴展的class文件,在類路徑中發現的類庫的class文件,用于應用程序運行的class文件等等。 3. AppClassLoader 用戶自定義類裝載器:負責除核心Java API以外的其它class文件的裝載。這里有一點需要注意:自定義類裝載器并非由應用程序員自己實現,它也是JVM

JVM加載class的過程

當我們使用命令來執行某一個Java程序(比如Test.class)的時候:java Test (1) java.exe 會幫助我們找到 JRE ,接著找到位于 JRE 內部的 jvm.dll ,這才是真正的 Java 虛擬機器 , 最后加載動態庫,激活 Java 虛擬機器。 (2) 虛擬機器激活以后,會先做一些初始化的動作,比如說讀取系統參數等。一旦初始化動作完成之后,就會產生第一個類裝載器 ―― BootstrapLoader(啟動類裝載器 ) 。 (3) Bootstrap Loader 所做的初始工作中,除了一些基本的初始化動作之外,最重要的就是加載 Launcher.java 之中的 ExtClassLoader(擴展類裝載器) ,并設定其 Parent 為 null ,代表其父加載器為 BootstrapLoader 。 (4) 然后 Bootstrap Loader 再要求加載 Launcher.java 之中的 AppClassLoader(用戶自定義類裝載器 ) ,并設定其 Parent 為之前產生的 ExtClassLoader 實體。這兩個加載器都是以靜態類的形式存在的。這里要注意的是, LauncherExtClassLoader.class與LauncherAppClassLoader.class 都是由 Bootstrap Loader 所加載,所以 Parent 和由哪個類加載器加載沒有關系。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久国产精品一区| 中文一区二区视频| 性色av一区二区咪爱| 欧洲中文字幕国产精品| 一区二区三区视频免费在线观看| 亚洲国产精品va在看黑人| 狠狠躁夜夜躁人人爽超碰91| 日韩女优在线播放| 欧美成人精品在线播放| 亚洲美女av黄| 欧美精品国产精品日韩精品| 国产视频自拍一区| 欧美性xxxx极品hd满灌| 日本久久久久亚洲中字幕| 日韩视频一区在线| 亚洲四色影视在线观看| 中文字幕成人精品久久不卡| 亚洲第一精品夜夜躁人人爽| 精品国产乱码久久久久久婷婷| 美女啪啪无遮挡免费久久网站| 91在线免费网站| 国产精品电影网站| 日韩网站免费观看高清| 欧美日韩一区二区免费在线观看| 91精品久久久久久久久久| 欧美亚洲成人精品| 欧美第一黄色网| 一级做a爰片久久毛片美女图片| 精品久久久在线观看| 久久精品国亚洲| 91中文字幕在线| 在线成人一区二区| 日韩电影中文字幕| 中文一区二区视频| 亚洲伦理中文字幕| 国产精品美女免费看| 亚洲第一二三四五区| 国产精品国产福利国产秒拍| 久久久久久久一| 中文字幕久热精品视频在线| 一本一本久久a久久精品综合小说| 久久天天躁狠狠躁老女人| 亚洲新声在线观看| 欧美日韩在线观看视频小说| 成人激情视频在线播放| 久久久免费精品| 国产精品成人av性教育| 国产成人精品久久二区二区| 欧美精品在线网站| 欧美精品一本久久男人的天堂| 久久男人av资源网站| 久久久久久av| 欧洲精品久久久| 在线观看视频99| 亚洲图片制服诱惑| 国产精品香蕉国产| 国产一区二区精品丝袜| 久久久久久久久久av| 国产剧情久久久久久| 国自产精品手机在线观看视频| 欧美成人剧情片在线观看| 57pao国产成人免费| 久久露脸国产精品| 97在线视频免费看| 精品在线欧美视频| 欧美激情视频网站| 亚洲午夜精品久久久久久性色| 日韩精品在线视频观看| 欧美另类交人妖| 亚洲一二在线观看| 92国产精品视频| 97视频人免费观看| 国产欧美精品日韩精品| 5566成人精品视频免费| 69精品小视频| 国产91成人在在线播放| 黑人巨大精品欧美一区二区一视频| 国产在线不卡精品| 亚洲成色777777女色窝| 日韩在线精品视频| 91九色在线视频| 国产欧美日韩丝袜精品一区| 久久人人爽人人爽人人片av高清| 日韩免费电影在线观看| 国产丝袜精品视频| 一级做a爰片久久毛片美女图片| 亚洲一区二区少妇| 国产精品久久久久久av下载红粉| 91久久久久久久久久| 国产精品一久久香蕉国产线看观看| 久久久99免费视频| 欧美大尺度激情区在线播放| 亚洲激情免费观看| 国产欧美日韩精品在线观看| 国产视频观看一区| 亚洲va久久久噜噜噜| 亚洲综合日韩中文字幕v在线| 丝袜亚洲欧美日韩综合| 97视频在线观看视频免费视频| 国产欧美精品在线| 日本成人精品在线| 国产精品久久久久高潮| 亚洲国产成人在线视频| 亚洲欧美精品在线| 亚洲精品久久久久| 欧美在线激情视频| 亚洲国产精久久久久久| 日韩美女免费视频| 国产午夜精品全部视频在线播放| 亚洲色图av在线| 亚洲精品网站在线播放gif| 日韩中文综合网| 成人黄色av网站| 国产精品第三页| 欧美激情二区三区| 国内伊人久久久久久网站视频| 热re99久久精品国产66热| 久久全国免费视频| 日韩在线观看免费全集电视剧网站| 日本不卡视频在线播放| 国产91精品黑色丝袜高跟鞋| 精品久久久av| 欧美成人精品不卡视频在线观看| 日韩精品电影网| 国产精品美女网站| 国产精品盗摄久久久| 亚洲高清av在线| 91日本视频在线| 尤物yw午夜国产精品视频明星| 亚洲一级一级97网| 欧美性猛交99久久久久99按摩| 欧美午夜片欧美片在线观看| 精品久久久中文| 久久九九亚洲综合| 国产精品1234| 欧美激情久久久久久| 日韩福利伦理影院免费| 欧美国产日韩xxxxx| 久久综合伊人77777| 日韩女在线观看| 国产精品色午夜在线观看| 欧美国产日韩中文字幕在线| 亚洲精品综合久久中文字幕| 国产精品美女免费看| 国产精品电影网站| 亚洲天堂av在线播放| 红桃av永久久久| 欧美日韩国产成人高清视频| 久热国产精品视频| 国产成人精品在线| 国产精品国语对白| 欧美日韩美女在线观看| 日本国产欧美一区二区三区| 成人自拍性视频| 亚洲精品国精品久久99热一| 国产精品激情av电影在线观看| 亚洲免费高清视频| 欧美综合在线观看| 91黑丝在线观看| 欧美成人国产va精品日本一级| 国产97色在线|日韩| 4p变态网欧美系列| www.日韩欧美| 亚洲一区二区少妇|