成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JVM實現機制及內部基本概念

開發 后端
這里向大家描述一下JVM實現機制,Java虛擬機就是一個小的計算機,有自己的指令集,有自己的文件系統,管理內部的表和數據,負責讀取class文件里面字節碼。

你對JVM實現機制是否熟悉,這里和大家分享一下,Window的JVM能把字節碼轉換成Window系統的指令集,Linux的JVM能把字節碼轉換成Linux系統的字節,同理還有Solaris,它們彼此之間是不能通用的。

1.JVM實現機制

Java虛擬機就是一個小的計算機,有自己的指令集,有自己的文件系統,管理內部的表和數據,負責讀取class文件里面字節碼,然后轉換成不同操作系統的CPU指令,從而使得Java程序在不同的操作系統上順利的跑起來。所以Window的JVM能把字節碼轉換成Window系統的指令集,Linux的JVM能把字節碼轉換成Linux系統的字節,同理還有Solaris,它們彼此之間是不能通用的。

最早一款的原型雖然是Sun公司開發的,但發展到現在其實任何廠商都可以自己去實現一個虛擬機,用來讀取字節碼轉換成OS指令。甚至我們可以認為JVM跟Java編程語言都沒有關系,因為你自己哪怕用記事本寫一串字節碼,也可以讓JVM來解析運行,只要你的字節碼能通過JVM的驗證。

JVM的驗證其實是很嚴格的,這里只講一些有趣的地方。大家還記得Java的圖標是一個杯咖啡麼?究其歷史我們也許可以查出為什么,但還有更顯而易見的方式是JVM怎么判斷一個文件是否是class文件?JVM的做法是讀取前4個字節轉換成16進制數,判斷是否等于0xCAFEBABE這個數。注意到這個單詞了麼?

“cafebabe”,代表著國外一種咖啡品牌,似乎叫做Peet’scoffee-baristas之類。創造Java的人為了方便記憶,選擇了這樣一個16進制數作為標準class文件的頭,所以任何class文件都必須具有這4個字節的頭部。我們可以用DataInput這個接口的實現類來驗證一下,讀取任何一個class文件的***個int,int在Java里面是四個字節。轉換成16進制一定會是0xcafebabe的。
所以這里想告訴大家的是,JVM其實并沒有那么神秘,我們完全可以理解它的構造。介紹完了JVM實現機制再來看一下JVM內部的基本概念。

2.JVM內部的基本概念

Java虛擬機內部有一些概念,全部列舉是不現實的,太繁瑣也沒有意義。除非您真的想自己去做一個JVM。筆者只列舉部分概念:
首先我們來看一個叫做ReturnAddress的變量,它是JVM用來存儲方法出口或者說進行跳轉的依據,把任何地址存入這個變量就一定會按照這個地址來跳轉。我們需要注意的就是finally有比方法return更高的賦值給ReturnAddress的優先級。同時存在方法return和finallyreturn的話,一定是按照finally里面的return為準。

JVM有自己的Heap,能被所有線程共享,存儲著所有的對象,內存是動態被分配的。對于每個線程,擁有自己的Stack,棧里面存儲的單位叫做Frame(楨)。楨里面就記錄著零時變量、對象引用地址、方法返回值等數據。JVM還有一個叫做MethodArea的地方,存儲著一段一段的可執行代碼,每一段就是一個方法體,也能被所有線程共享。所以我們說一個線程其實從run方法跑起來,跟它的類中聲明的其他方法是兩個概念。因為其他的方法包括的所有的對象,這個時候都充當為資源被線程使用。

JVM有自己管理內存的方案,因為它具有文件系統的功能,我們可以看成一個小型的數據庫,內部有許許多多不同的表。表的字段可能是另外一張表的地址,也可以直接就是一個存儲數據值的地址值。JVM所有對運行時候類的解析驗證計算等管理工作,實際上都是在管理這些表的變動,如果我們從數據庫的角度來看,JVM所做的就是根據你的代碼來操作那么多個表***返回給你結果的過程。里面的表結構包括class的表、field表、method表、attribute表等。本節關于JVM實現機制的內容介紹到這里,請關注本文其他相關報道。

【編輯推薦】

  1. MyEclipse設置JVM突破內存限制
  2. 探究JVM1.6與JVM1.5性能差距
  3. JVM內存泄漏問題產生及檢測方案
  4. 全面認識Eclipse中JVM內存設置
  5. JVM啟動參數中標準參數列表速查手冊


 

責任編輯:佚名 來源: javabk.com
相關推薦

2010-02-02 15:30:05

C++ include

2011-03-28 11:05:17

ODBC

2010-03-01 17:57:11

WCF緩存機制

2010-02-06 14:04:58

C++內存使用機制

2014-04-16 15:11:19

Spark

2009-03-20 11:46:10

MGCP協議網關

2012-09-11 14:39:03

Moosefs

2011-04-01 12:37:19

路由

2010-07-07 15:17:40

LDAP協議

2010-08-23 16:58:17

DHCP協議

2012-12-03 17:12:10

HDFS

2009-08-18 10:34:31

Java入門基本概念

2011-07-19 13:44:39

JavaScript

2010-07-12 09:43:38

Symbian開發

2009-12-21 10:27:52

WCF基本概念

2010-02-23 16:32:29

WCF服務

2009-12-29 18:29:09

Silverlight

2017-04-07 10:19:22

交易支付概念

2010-06-24 13:26:53

FTP協議

2009-12-21 15:33:07

WCF集合元素
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩三级| 成人在线精品视频 | av一区二区三区四区 | 伊人国产精品 | 久久国产区| 国产精品视频一区二区三 | 国产精品a久久久久 | 国产成人综合av | 免费观看一区二区三区毛片 | 亚洲精色 | 日韩中文在线视频 | 九九热精品视频 | 精品一二区| 国产一区二区三区在线看 | 中文字幕乱码一区二区三区 | 成人免费看电影 | 久久久久久99 | 羞羞的视频网站 | 久久久久无码国产精品一区 | 91在线视频观看 | 国产免费观看久久黄av片涩av | 精品一级毛片 | 国产激情免费视频 | 国产一区二区三区免费观看视频 | 日本在线免费 | 精品国产一区二区国模嫣然 | 暴草美女 | 国产精品亚洲二区 | 久久一区二区av | 久久综合av| 在线观看午夜视频 | 五月激情久久 | 亚洲成人精 | 在线观看视频h | 91精品国产综合久久久久久丝袜 | 亚洲精品久久久 | 久久精品黄色 | 99精品国产一区二区青青牛奶 | 久久99国产精一区二区三区 | 国产在线精品一区二区三区 | 中文字幕亚洲精品 |