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

《深入理解Java虛擬機》筆記

開發 后端 開發工具
“編好的機器指令”當然指的是能在CPU上運行的,如果這里我還實現了一個翻譯機器:從自己定義的格式指令翻譯到CPU指令,那么就可以執行根據自定義格式的代碼了……

在C里面我們想執行一段自己編寫的機器指令的方法大概如下:

  1. typedef void(*FUNC)(int);  
  2. char* str = "your code";  
  3. FUNC f = (FUNC)str;  
  4. (*f)(0); 

也就是說,我們完全可以做一個工具,從一個文件中讀入指令,然后將這些指令運行起來。上面代碼中“編好的機器指令”當然指的是能在CPU上運行的,如果這里我還實現了一個翻譯機器:從自己定義的格式指令翻譯到CPU指令,那么就可以執行根據自定義格式的代碼了。那么上面這段代碼是不是相當于最簡單的一個虛擬機了?下面來看JVM的總體結構:

 

ClassLoader的作用是裝載能被JVM識別的指令(當然不只是從磁盤文件或內存去裝載),那么我們先了解一下該格式:

魔數以及版本就不說了(滿大街的文件格式都是這個東西),接著的便是常量池,其中無非是兩種東西:

  1. 字面常量(比如Integer、Long、String等);
  2. 符號引用(方法是哪里的?什么樣的?);

而我們知道,在JVM里面Class都是根據全限定名去找的,那么方法的描述當然也應該如此,那么就得到這些常量之間的關系如下:

  

在接下來的“訪問權限”中表明了該Class 是public還是private等,而this&super&interface則表面了“本類”、“繼承自哪個類”、“實現了哪些接口”,實際上這里只是保存了代表這些信息的CONSTANT_Class_info的下標(u2)。

  

感覺這里的NameIndex和 DescriptorIndex加起來和NameAndType有點像,那么為什么不直接用一個NameAndType的索引值表示?MethodInfo和FieldInfo之間最大的不同點就是Attributes。比如FieldInfo的屬性表中存放的是變量的初始值,而 MethodInfo的屬性表中存放的則是字節碼。那么我們來依次看這些Attributes,首先是Code:

  

有幾個有意思的地方:

  1. 從Class文件中可以知道在執行的過程中棧的深度;
  2. 對于非靜態方法,編譯器會將this通過參數傳遞給方法;
  3. 異常表中記錄的范圍是指令的行數(而不是源代碼的);
  4. 這里的異常是指try-catch中的,而與Code同級的異常表中的則是指throws出去的;

Exceptions則非常簡單:

LineNumberTable保存了字節碼和源碼之間的關系,結構如下:

  

LocalVariableTable描述了棧幀中局部變量表的變量和源代碼中定義的變量之間的關系,結構如下:

  

SourceFile指明了生成該Class文件的Java源碼文件名(比如在一個Java文件中申明了很多類的時候會生成很多Class文件),結構如下:

Deprecated和Synthetic屬性只存在“有”和“沒有”的區別:

  1. Deprecated:被程序作者定為不再推薦使用,通過@deprecated注釋說明;
  2. Synthetic:表示字段或方法是由編譯器自動生成的,比如<init>; 

這也就是為什么Code屬性后面會有Attribute的原因?

類加載的時機就很簡單了:在用到的時候就加載(廢話!)。下來看一下類加載的過程:

  

執行上面這段過程的是:ClassLoader,這個東西還是非常重要的,在JVM中是通過ClassLoader和類本身共同去判斷兩個Class是否相同。換句話說就是:不同的ClassLoader加載同一個Class文件,那么JVM認為他們生成的類是不同的。有些時候不會從Class文件中加載流(比如Java Applet是從網絡中加載),那么這個ClassLoader和普通的實現邏輯當然是不一樣的,通過不同的ClassLoader就可以解決這個問題。

但是允許使用不同的ClassLoader又引發了新的問題:如果我也聲明了一個java.lang.Integer,但是里面的代碼非常危險,怎么辦?這里就引出了雙親委派模式:

除了頂層的啟動類加載器外,其余的類加載器都應該有父類加載器(通過組合實現),它在接到加載類的請求時優先委派給父類加載器去完成。

這樣的話,在加載java.lang.Integer的時候會優先使用系統的類加載器,這樣就不會加載用戶自己寫的。在Java程序員看到有3種系統提供的類加載器:

  1. Bootstrap ClassLoader:負責加載<JAVA_HOME>\lib目錄中的類庫,無法被Java程序直接引用;
  2. Extension ClassLoader:負責加載<JAVA_HOME>\lib\ext,開發者可以直接使用;
  3. Application ClassLoader:加載ClassPath上所指定的類庫,如果沒有自己定義過自己的類加載器則會使用它;

這樣默認的類會是有Application ClassLoader去加載類,然后如果發現要使用新的類型的時候則會遞歸地使用Application ClassLoader去加載(在前面的加載過程中提到)。這樣,只有在自己的程序中能使用自己編寫的ClassLoader去加載類,并且這個被加載的類是不能被別人使用的。

雙親委派模式不是一個強制性的約束,而是Java設計者推薦給開發者的類加載實現方式。雙親委派模式出現過的3次“破壞”:

  1. 為了兼容JDK 1.0,建議使用者去覆蓋findClass方法;
  2. 在基礎類要訪問用戶類的代碼會出現問題(比如JNDI):線程山下文類加載器;
  3. 用戶的一些需求,比如HotSwap、OSGI等; 

加載完完成后,接下來就要看程序是怎么運行的。棧幀是用于支持虛擬機進行方法調用和執行,幀的意思就是一個單位,在調用其他方法的時候會向棧中壓入棧幀,結構如下:

  

在Class文件編譯完成之后,在運行的時候需要多少個局部變量就已經確定(在前面Class文件中也已經看到過了),那么這里需要注意這個特性可能會引發GC(具體如何引發就不在這里細說了)。在棧中,總是底層的棧去調用高層的棧(并且一定的相鄰的),那么他們在參數傳遞(返回結果)的時往往是通過將其壓入操作數棧,有些虛擬機為了提高這部分的效率使得相鄰棧幀“糾纏”在一起:

  

那么我們接下來要去看是方法是如何執行的,第一個問題就是執行哪個方法?在“面向過程”的編程中似乎不存在在個問題,但是在Java OR C++中這都是比較蛋疼的一個問題。原因就是平時不會這么用,但是你必須去搞明白= =。JVM確定目標方法的時候有兩種方法:

  1. 靜態分派:根據參數類型和方法名稱來決定調用哪個方法。但是,并不是說沒有發現匹配的類型就報錯,比如有:func(int a),而在調用func('a')的時候也會調用該方法(當然是在沒有func(char a)的前提下),這樣給人的關鍵就有點像一個處理的鏈條。不管多么復雜,這些都是在編譯期間確定的,因為這里是向上找的。
  2. 動態分派:最普遍的就是Interface a = new Implements(),a調用方法到底應該是哪個類的在編譯期間是無法確定的。其實動態分派實現起來也很簡單:在調用方法的時候先拿到對象的實際類型。

其實“靜態”和“動態”給人的感覺還是比較模糊的,“靜態分派”給人的感覺是根據參數的類型向上查找方法,“動態分派”給人的感覺則是根據實例的真實類型向上查找。虛擬機優化動態分派的效率一般是為類在方法區中建立一個虛方法表:

虛方法表中存放各個方法實際入口地址,如果某個方法在子類中沒有被重寫,那么子類的虛方法表里面的地址入口和父類相同方法的地址入口是一致的,都指向父類的實現入口。如果子類重寫了這個方法,子類方法表中的地址將會被替換為指向子類實現版本的入口地址。其實往簡單里說,就是一個預處理。

原文鏈接:http://www.cnblogs.com/tianchi/archive/2012/11/11/2761631.html

責任編輯:林師授 來源: 博客園
相關推薦

2024-03-29 11:42:21

Java虛擬機

2019-07-24 16:04:47

Java虛擬機并發

2024-04-03 13:49:00

Java虛擬機方法區

2016-09-01 12:37:13

OpenStack虛擬機Metadata

2024-03-26 07:30:07

Java虛擬機源文件

2023-09-22 23:00:11

Java虛擬機

2024-04-10 07:40:45

Java虛擬機內存

2021-05-13 21:27:24

ThreadLocal多線程多線程并發安全

2019-12-31 10:45:30

JavaVisualVM高并發

2011-12-28 13:24:47

JavaJVM

2011-12-28 13:38:00

JavaJVM

2016-12-08 15:36:59

HashMap數據結構hash函數

2020-07-21 08:26:08

SpringSecurity過濾器

2010-06-01 15:25:27

JavaCLASSPATH

2011-03-17 09:58:43

Java虛擬機JVM

2022-08-21 16:52:27

Linux虛擬內存

2012-03-05 11:09:01

JavaClass

2023-09-19 22:47:39

Java內存

2009-06-19 14:10:42

Java多態性

2019-08-27 16:23:41

Docker虛擬化虛擬機
點贊
收藏

51CTO技術棧公眾號

国产一区二区在线电影| 天天久久夜夜| 亚洲狠狠丁香婷婷综合久久久| 92国产精品视频| 久久人人爽人人爽人人| 国产精品白丝av嫩草影院| 一本色道久久综合亚洲精品按摩| 亚洲国产午夜伦理片大全在线观看网站 | 国产精品一区免费视频| 久久久免费精品| 一级特黄曰皮片视频| 日本在线一区二区三区| 狠狠操狠狠色综合网| 在线一区日本视频| 三级av在线| 韩国午夜理伦三级不卡影院| 97香蕉超级碰碰久久免费的优势| 日本高清黄色片| 99re6热只有精品免费观看| 91福利国产成人精品照片| 黑人巨茎大战欧美白妇| 欧美视频综合| 国产成人在线观看| 国产精品白丝jk喷水视频一区| 欧美国产日韩在线观看成人| 国产videos久久| 亚洲成人av在线播放| 精品久久久99| 成人性生交大片免费网站| 亚洲欧美国产三级| 日韩尤物视频| 午夜av免费在线观看| 国产一区二区在线看| 国产精品久久久久久影视| 91精品国产高潮对白| 亚洲欧洲日韩| 日韩在线中文字幕| 公侵犯人妻一区二区三区| 成午夜精品一区二区三区软件| 欧美日韩夫妻久久| 无码少妇一区二区三区芒果| 9765激情中文在线| 夜夜嗨av一区二区三区四季av | 国产成一区二区| 国产无遮挡又黄又爽又色| 无需播放器亚洲| 在线观看视频99| 国产精品无码久久久久一区二区| 精品国产乱子伦一区二区| 91精品国产乱| 五月激情婷婷在线| 全球最大av网站久久| 日韩欧美在线国产| 国产亚洲天堂网| 小早川怜子影音先锋在线观看| 午夜精品一区二区三区三上悠亚 | 久久亚洲AV成人无码国产野外| 成人动态视频| 精品国产欧美一区二区| 久久久久99人妻一区二区三区| 欧一区二区三区| 欧美一二三区在线观看| 黄色片子免费看| 欧美国产亚洲精品| 欧美变态tickle挠乳网站| 被黑人猛躁10次高潮视频| 精品国产三级| 精品精品欲导航| av漫画在线观看| 国产福利一区二区精品秒拍| 亚洲第一福利网| 手机在线看片日韩| 国产91一区| 自拍偷拍亚洲精品| 在线免费观看亚洲视频| 亚洲福利国产| 日韩av色在线| 中文字幕一区二区三区四区视频| 久久精品国产免费| 97伦理在线四区| 五月婷婷免费视频| 国产欧美日本一区视频| 一区二区三区四区免费观看| 永久免费网站在线| 五月综合激情婷婷六月色窝| 欧美精品色婷婷五月综合| 精品裸体bbb| 欧美一级xxx| 日本黄色录像片| 精品精品久久| 欧美成人在线免费视频| 精品成人免费视频| 日本免费新一区视频| 亚洲一区中文字幕| 午夜福利一区二区三区| 国产精品久久久久影视| 免费视频爱爱太爽了| 日本久久免费| 日韩一级二级三级| 国产三级av在线播放| 欧美电影免费观看高清| 久久久影视精品| 中文字幕资源网| 成人激情小说网站| 一区二区三区在线视频111| 国精一区二区三区| 欧美无人高清视频在线观看| 国产调教打屁股xxxx网站| 免费欧美一区| 九九视频直播综合网| 久久青青草原亚洲av无码麻豆| 久久99精品国产91久久来源| 久久国产欧美精品| www久久日com| 91高清在线观看| 少妇献身老头系列| 91日韩欧美| 青青青国产精品一区二区| 99热这里只有精品1| 久久精品人人爽人人爽| 隔壁人妻偷人bd中字| 黄色欧美视频| 亚洲欧美日韩久久久久久| 久久久精品91| 久久电影网电视剧免费观看| 欧美xxxx黑人又粗又长密月| 暖暖在线中文免费日本| 欧美精品久久久久久久多人混战| 熟女俱乐部一区二区| 亚洲精品乱码| 成人黄色在线免费观看| 日本中文在线| 欧美色倩网站大全免费| 欧美熟妇一区二区| 一区二区三区福利| 国产精品高清一区二区三区| 亚洲无线看天堂av| 欧美一区二区在线视频| 亚洲欧美综合7777色婷婷| 久久精品在线| 久久亚洲国产精品日日av夜夜| 黑人另类精品××××性爽| 日韩美女在线视频| 欧美第一页在线观看| 九九久久精品视频| 一区不卡字幕| 黄色日韩网站| 日韩在线小视频| 伊人免费在线观看| 国产精品免费久久| 五月婷婷激情久久| 日韩欧美精品一区| 国产精品爽爽爽爽爽爽在线观看| 免费成人av电影| 欧美性xxxxxxxxx| 久久精品老司机| 久久久精品性| 无遮挡亚洲一区| а√天堂资源国产精品| 一区二区三区亚洲| 在线观看国产成人| 亚洲色图视频网站| 性色av浪潮av| 欧美午夜精品| 久久99热只有频精品91密拍| 午夜不卡影院| 中文字幕在线成人| 国产又粗又猛视频免费| 亚洲欧美视频一区| 免费黄色在线播放| 日韩午夜av在线| 欧美日韩在线精品| 69堂免费精品视频在线播放| 中文字幕亚洲一区二区三区| 91丨porny丨在线中文| 亚洲激情男女视频| 爱爱的免费视频| 日本三级亚洲精品| 97精品国产97久久久久久粉红| 一区二区三区自拍视频| 91av成人在线| 在线视频自拍| 亚洲精品一区二区三区影院| 成人毛片在线播放| 国产精品―色哟哟| 麻豆av免费看| 日韩精品免费专区| 色乱码一区二区三区熟女| www.久久东京| 国产精品视频久| 伦理av在线| 国产一区二区av| 精品二区在线观看| 欧美色另类天堂2015| 丰满的亚洲女人毛茸茸| 国产成人亚洲精品青草天美| 波多野结衣乳巨码无在线| 郴州新闻综合频道在线直播| 99电影网电视剧在线观看| 亚洲国产欧美日本视频| 久久精品久久久久久国产 免费| 成人午夜免费福利| 91福利视频在线| 青青草精品在线视频| 久久久久国产精品人| 欧美污在线观看| 视频一区在线视频| 日韩欧美猛交xxxxx无码| 精品国产成人| 国产欧美精品一区二区三区| 日韩欧乱色一区二区三区在线| 海角国产乱辈乱精品视频| 一广人看www在线观看免费视频| 日韩三级精品电影久久久| 69av视频在线观看| 亚洲成av人片一区二区| 久草手机视频在线观看| 久久精品一区八戒影视| av在线天堂网| 韩国理伦片一区二区三区在线播放| 久久成人免费观看| 欧美成人69av| 欧美日韩视频免费在线观看| 精品视频黄色| 久久综合中文色婷婷| 99久久香蕉| 成人激情综合网| 素人一区二区三区| 国产成人精品久久二区二区| 1234区中文字幕在线观看| 久久午夜a级毛片| 二区在线观看| 亚洲人成人99网站| 亚洲欧洲成人在线| 亚洲高清一二三区| 欧美一区二区三区激情| 日韩三区在线观看| www.国产精品视频| 欧美一级高清片在线观看| 国产又粗又猛又黄又爽| 欧美高清视频不卡网| 中文字幕理论片| 欧美影院午夜播放| 伊人久久中文字幕| 在线观看成人免费视频| 亚洲成熟少妇视频在线观看| 精品成人乱色一区二区| 日本熟妇毛耸耸xxxxxx| 亚洲无人区一区| 国产探花在线播放| 玉米视频成人免费看| 妺妺窝人体色www聚色窝仙踪| 亚洲精品成人在线| 欧美精品成人久久| 亚洲成人自拍偷拍| 日韩欧美大片在线观看| 欧美日韩国产精品一区二区三区四区 | 亚洲动漫精品| 欧美裸体网站| 欧洲美女日日| 尤物国产精品| 综合激情在线| 日韩人妻无码精品久久久不卡| 1024精品一区二区三区| 国产美女无遮挡网站| 亚洲一区二区伦理| 无人在线观看的免费高清视频| 日韩av在线免费观看不卡| 男人插女人下面免费视频| 免费观看日韩电影| www.污网站| 国产69精品久久久久毛片| 亚洲婷婷在线观看| 91浏览器在线视频| 岛国片在线免费观看| 亚洲柠檬福利资源导航| 精品视频久久久久| 色综合久久久久久久久| 一级黄色免费看| 日韩女同互慰一区二区| 色就是色亚洲色图| www.美女亚洲精品| 毛片在线导航| 国产999精品久久久影片官网| 久久久久黄色| 国产二区一区| 成人系列视频| 国产午夜精品视频一区二区三区| 亚洲人体大胆视频| 91色国产在线| 国产成人久久精品77777最新版本| 亚洲国产精品自拍视频| 中文在线资源观看网站视频免费不卡 | aa在线免费观看| 毛片一区二区三区| 成人做爰www看视频软件| 国产亚洲欧洲997久久综合| 极品久久久久久| 欧美视频在线免费| 国产精品视频一二区| 日韩av综合网| 国产美女av在线| 欧美影院久久久| 美女精品视频在线| 日产国产精品精品a∨| 亚洲手机视频| 亚洲一区日韩精品| www欧美成人18+| 久久精品女人毛片国产| 欧美日韩一卡二卡三卡| 特级丰满少妇一级aaaa爱毛片| 日韩中文在线中文网在线观看| 高清毛片在线观看| 91老司机精品视频| 国产一区二区电影在线观看| 欧美大黑帍在线播放| 蜜桃av噜噜一区| 无码熟妇人妻av| 亚洲一卡二卡三卡四卡无卡久久| 亚洲精品国产精品国自产网站按摩| 亚洲精品一区二区三区99| 精品孕妇一区二区三区| 国产精品电影观看| 亚洲激情播播| 国产九九九九九| 国产精品一级在线| 永久免费看片直接| 欧美性大战xxxxx久久久| 午夜成人免费影院| 国模吧一区二区三区| 麻豆精品国产| 26uuu成人| 国模一区二区三区白浆| 91视频免费看片| 在线精品亚洲一区二区不卡| 四虎精品在线| 97久久久久久| 国产乱论精品| a级免费在线观看| 国产精品一品视频| 99久久婷婷国产综合| 欧美人与性动xxxx| 亚洲s色大片| 国产欧美精品一区二区| 成人久久久久| 视频在线观看免费高清| 国产精品麻豆欧美日韩ww| 91麻豆精品在线| 尤物tv国产一区| 成人看片毛片免费播放器| 手机看片福利永久国产日韩| 日本视频一区二区| 色www亚洲国产阿娇yao| 欧美日韩国产一区| 黄色小网站在线观看| 91中文字幕在线观看| 亚洲视频久久| 国产精品麻豆入口| 色综合夜色一区| wwwxxx在线观看| 成人福利免费观看| 欧美国产专区| 亚洲自拍偷拍精品| 欧美性猛交xxxxx免费看| 国产黄色片在线播放| 国产日本欧美在线观看 | 色诱女教师一区二区三区| 国产原创一区| 狠狠干视频网站| www.一区二区| 国产男人搡女人免费视频| 日韩在线观看免费网站 | 免费在线观看成人av| 免费人成又黄又爽又色| 欧美三级午夜理伦三级中视频| 黄页视频在线播放| 国产精品大全| 久久久青草婷婷精品综合日韩| 国产午夜精品久久久久久久久| 777精品伊人久久久久大香线蕉| 肉肉视频在线观看| 久久综合色一本| 国内一区二区在线| 日本免费一区二区视频| 国产成人综合精品在线| 91亚洲国产| 香蕉视频免费网站| 色先锋资源久久综合| 免费看a在线观看| 国产精品大全| 日韩高清在线电影| 国产极品国产极品| 亚洲欧美综合图区| 国产精品亚洲一区二区在线观看| 一二三四视频社区在线| 国产蜜臀97一区二区三区| 亚洲爱爱综合网| 国产精品劲爆视频| 在线日韩av| 一区二区三区影视|