精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

视频一区亚洲| 日本高清+成人网在线观看| 国产一级片自拍| 欧美6一10sex性hd| 92国产精品观看| 国产精品久久久久久久天堂| 杨钰莹一级淫片aaaaaa播放| 国产欧美自拍一区| 欧洲国内综合视频| 少妇大叫太大太粗太爽了a片小说| 熟妇人妻av无码一区二区三区| 老色鬼久久亚洲一区二区| 超碰97人人做人人爱少妇| 成人免费无码大片a毛片| 欧美韩国日本| 欧美日韩免费在线| 懂色av一区二区三区四区五区| 五级黄高潮片90分钟视频| 欧美极品影院| 一个色综合av| 四虎永久国产精品| 三级网站在线看| 久久99精品久久久久| 欧美一级大片在线观看| 特级片在线观看| 国产99亚洲| 亚洲成人动漫在线播放| 老司机午夜性大片| 日韩不卡免费高清视频| 亚洲成人免费视| 三年中文高清在线观看第6集| 亚洲av片一区二区三区| 国产精品亚洲一区二区三区妖精 | 国产精品实拍| 久久久久99精品一区| 国产精品xxx在线观看www| 伊人久久亚洲综合| 乱码第一页成人| 久久久久久久久中文字幕| av黄色免费在线观看| 久久不卡国产精品一区二区| 亚洲第一国产精品| 国产ts在线观看| 久久wwww| 欧美一级一区二区| 99日在线视频| 久久久加勒比| 欧美日韩小视频| 99视频在线视频| 国产一区一一区高清不卡| 欧美视频13p| 日日橹狠狠爱欧美超碰| 999精品网| 污片在线观看一区二区 | 一本色道88久久加勒比精品| 欧美成人一区在线| 婷婷在线精品视频| 亚洲一级淫片| 理论片在线不卡免费观看| 色哟哟一一国产精品| 青青草成人影院| xxxxxxxxx欧美| 免费黄色国产视频| 亚洲xxx拳头交| 久久这里有精品| 青青草手机在线视频| 国产精品v日韩精品v欧美精品网站| 色综合伊人色综合网站| 成年人看的免费视频| 婷婷精品进入| 欧美剧在线观看| 国产一级片网址| 一本久道综合久久精品| 国产成人精品免高潮在线观看| 日韩 国产 欧美| 六月丁香综合在线视频| 成人在线中文字幕| 丰满人妻一区二区三区无码av | 亚洲激情av| 亚州精品天堂中文字幕| 日韩精品一区不卡| 麻豆成人久久精品二区三区红 | 久久久久久这里只有精品| 久久精品国产亚洲av高清色欲| 日韩视频久久| 国产精品美乳在线观看| 国产精品日韩无码| 成人精品国产免费网站| 欧美性天天影院| 国产传媒在线播放| 精品久久久久久国产91| 中文字幕在线导航| 亚洲日本一区二区三区在线| 日韩电视剧免费观看网站| 卡一卡二卡三在线观看| 亚洲精品一区二区在线看| 久久久人成影片一区二区三区观看| 国产精品男女视频| 精品伊人久久久久7777人| 国精产品一区二区| 午夜伦理在线| 精品成人在线视频| 污污网站在线观看视频| 国产一区丝袜| 最近更新的2019中文字幕| 欧美成人一二三区| 日韩激情一二三区| 国产66精品久久久久999小说| 国产毛片在线| 亚洲国产一区二区在线播放| 少妇黄色一级片| 成午夜精品一区二区三区软件| 国产一区二区三区视频| 国产在线观看99| 麻豆91在线看| 欧美专区一二三| 污视频网站在线免费| 欧美午夜寂寞影院| 给我免费观看片在线电影的| 亚洲成人一区| 国产精品黄视频| 日韩中文字幕观看| 亚洲人被黑人高潮完整版| 91在线视频观看免费| 成人自拍在线| 久久不射电影网| 91丨九色丨海角社区| 99麻豆久久久国产精品免费| 日本精品免费视频| 国产69精品久久久久按摩| 精品伊人久久97| 国产真实的和子乱拍在线观看| 久久精品国产一区二区三| 免费看成人午夜电影| 七七久久电影网| 日韩限制级电影在线观看| 91无套直看片红桃在线观看| 久久欧美肥婆一二区| 97自拍视频| 久草免费在线| 欧美日韩国产另类一区| 亚洲国产日韩一区无码精品久久久| 亚洲毛片网站| 国产亚洲一区在线播放| 天堂成人av| 欧美一区二区三区四区五区 | 亚洲成人久久精品| 亚洲视频你懂的| 亚洲涩涩在线观看| 欧美黄色录像片| 国产在线精品自拍| 日韩精品成人av| 欧美另类z0zxhd电影| 国产一二三av| 九色|91porny| 懂色av一区二区三区四区五区| 9999精品视频| 欧美成人网在线| 亚洲国产成人在线观看| 一区二区三区欧美日| av在线天堂网| 亚洲精品偷拍| 久久久影院一区二区三区| 男女羞羞在线观看| 亚洲人成免费电影| 欧美另类高清videos的特点| 日本一区二区久久| 九一精品久久久| 欧美午夜影院| 国内精品国语自产拍在线观看| 蜜桃av在线播放| 亚洲全黄一级网站| 一本一道人人妻人人妻αv| 亚洲欧美偷拍另类a∨色屁股| 青娱乐国产精品视频| 激情综合中文娱乐网| 久久99精品久久久久久久久久| 成人免费网站视频| 最新69国产成人精品视频免费| 97超碰国产在线| 亚洲一区二区四区蜜桃| 新91视频在线观看| 麻豆91精品91久久久的内涵| 欧美一二三不卡| 香蕉久久夜色精品国产使用方法 | 久久久精品毛片| 国产精品黄色在线观看| 一区二区在线免费观看视频| 一区二区国产在线观看| 色综合久久88色综合天天提莫| va天堂va亚洲va影视| 午夜剧场成人观在线视频免费观看| 激情小说 在线视频| 91精品国产黑色紧身裤美女| www.日本精品| 亚洲日本在线看| 欧美色图亚洲激情| 国产美女精品人人做人人爽| 97国产精东麻豆人妻电影 | 99国产一区二区三精品乱码| 久久久精品麻豆| 狠狠88综合久久久久综合网| 色一情一乱一伦一区二区三区丨| 亚洲精品一区国产| 国产精品亚洲视频在线观看| 91色在线看| 日韩资源在线观看| 天堂a√在线| 91精品中文字幕一区二区三区| 啦啦啦免费高清视频在线观看| 亚洲人123区| 女人十八毛片嫩草av| 99这里只有精品| 99中文字幕在线| 日韩在线一区二区| 日韩在线观看a| 欧美xxav| 日韩中文字幕av在线| 国偷自产av一区二区三区| 成人写真福利网| 欧美日韩免费观看视频| 性色av一区二区三区在线观看| www红色一片_亚洲成a人片在线观看_| 亚洲欧美三级在线| 少妇无码一区二区三区| 欧美一级日韩一级| 一二三区在线播放| 欧美在线不卡视频| 九九热在线免费观看| 亚洲一区视频在线| h色网站在线观看| 国产精品高潮呻吟| 久久亚洲无码视频| 久久色在线视频| 偷偷色噜狠狠狠狠的777米奇| 国产精品一区二区三区乱码| 99热一区二区| 麻豆91精品视频| 天天视频天天爽| 日本不卡一区二区三区| 999香蕉视频| 久久成人一区| 人妻熟妇乱又伦精品视频| 伊人成人网在线看| 欧美一区二区视频在线播放| 欧美日韩ab| 人妻激情另类乱人伦人妻| 影视一区二区| 特色特色大片在线| 欧美一区高清| 最新av网址在线观看| 欧美黄免费看| 精品免费久久久久久久| 国产精品va| 霍思燕三级露全乳照| 亚洲伦理精品| 狠狠爱免费视频| 日韩高清在线观看| 欧美婷婷精品激情| 精品一二三四区| 韩国三级丰满少妇高潮| 国产丶欧美丶日本不卡视频| 国产乱国产乱老熟300部视频| 国产成人aaa| 中文字幕 日本| 91麻豆国产福利精品| 国产精久久一区二区三区| 欧美激情综合五月色丁香小说| 在线观看免费黄色网址| 亚洲天堂av一区| 国产亚洲精品成人| 欧美日韩在线视频首页| 狠狠狠狠狠狠狠| 91精选在线观看| 天堂中文在线官网| 永久555www成人免费| 老司机午夜在线视频| 久久久在线免费观看| 97成人资源| 国产情人节一区| 精品国产午夜肉伦伦影院| 欧美少妇一区| 亚洲国产一区二区三区在线播放| www.国产在线播放| 久久一二三区| 制服下的诱惑暮生| 91美女蜜桃在线| 欧美性生给视频| 亚洲成人动漫精品| 中国女人一级一次看片| 欧美mv日韩mv国产网站app| 青青草免费在线| 久久久精品欧美| 芒果视频成人app| 成人免费看吃奶视频网站| 欧美理伦片在线播放| 亚洲欧美一区二区原创| 亚洲激情影院| 91亚洲精品久久久蜜桃借种| 99久久综合精品| 日本少妇aaa| 欧美日韩在线看| 国产内射老熟女aaaa∵| 日韩高清av在线| 在线免费观看a视频| 国产成人精品av在线| 久久9999免费视频| 日韩av高清| 亚洲高清电影| 九九九九九伊人| 久久精品人人做人人综合 | 日韩欧美在线免费观看| 国产男男gay体育生白袜| 亚洲欧美国产精品专区久久| 污污片在线免费视频| 国产精品国产三级国产aⅴ浪潮 | 亚洲第一视频网| 欧美黑人激情| 欧美在线激情网| 国产精品网站在线看| 国产一二三四五| 蜜臀av一区二区在线观看| 魔女鞋交玉足榨精调教| 亚洲风情在线资源站| 国产视频www| 色老头一区二区三区在线观看| 超碰国产一区| 激情五月综合色婷婷一区二区| 牛牛国产精品| av中文字幕网址| 国产欧美中文在线| 一级黄色在线视频| 国产丝袜视频一区| 国产污视频在线播放| av成人观看| 一本到12不卡视频在线dvd| 国产无色aaa| 国产精品久久久久毛片软件| 青青国产在线视频| 亚洲欧美日韩久久久久久| 涩涩网在线视频| 久久国产一区| 制服诱惑一区二区| 国产xxxx视频| 五月婷婷色综合| 色网站免费观看| 91禁外国网站| 爽爽窝窝午夜精品一区二区| 久在线观看视频| 91丨九色porny丨蝌蚪| 99精品在线播放| 亚洲免费中文字幕| 欧美福利在线播放| 天天久久人人| 久久成人18免费观看| 国产中文av在线| 3751色影院一区二区三区| 91一区二区三区在线| 97超级碰碰| 亚洲久久一区二区| 精品国产av无码| 欧美日韩国产综合一区二区三区| 日本中文字幕伦在线观看| 91精品在线观看视频| 午夜日韩av| 成年人的黄色片| 日本高清免费不卡视频| 思思99re6国产在线播放| 91精品视频在线播放| 狠狠入ady亚洲精品经典电影| 免费黄色三级网站| 一本大道av一区二区在线播放| aiai在线| 99超碰麻豆| 久久婷婷影院| 91麻豆精品成人一区二区| 日韩免费成人网| 成入视频在线观看| 婷婷久久青草热一区二区| 国产一区二区三区黄视频| 日韩特黄一级片| 夜夜嗨av一区二区三区免费区| www久久久| 日本国产在线播放| 中文字幕免费不卡在线| 国内精品久久久久久久久久 | 国产制服91一区二区三区制服| 成人不卡免费av| 精品国产www| 欧美激情国内偷拍| 国产欧美日韩影院| 日本中文字幕在线不卡| 欧美日韩一区二区在线| 日本不卡视频| 精品网站在线看| 激情图片小说一区| 好看的av在线| 九九热这里只有在线精品视| 国产乱码精品一区二区亚洲| 中文字幕乱妇无码av在线|