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

盤點JVM體系結構的組成元素

開發 后端
你對JVM體系結構是否了解,這里向大家簡單描述一下,JVM的數據類型包括基本類型和引用類型,數據不需要做標記或者可被檢查以確定類型。也就導致JVM的指令集是針對特定類型的值的。

本文向大家介紹一下JVM體系結構的概念和組成,JVM的數據類型包括基本類型和引用類型,JVM包含對對象的顯式支持(引用類型),相信本文介紹一定會讓你有所收獲。

JVM體系結構

1.1數據類型

基本類型和引用類型
基本值和引用值

數據不需要做標記或者可被檢查以確定類型。也就導致JVM的指令集是針對特定類型的值的。

JVM包含對對象的顯式支持(引用類型)

1.2基本類型和值

基本類型--returnAddress類型(JVM指令的操作碼的指針,不是java類型)
--數值類型--整型--byte
--short
--int
--long
--浮點型--float
--double
--char

JVM中沒有boolean類型,java中的boolean類型的操作被翻譯為int類型進行操作。

1.1引用類型和值

JVM體系結構有三種引用類型:類類型,接口類型,數組類型

1.4字

JVM中沒有指定數據類型的存儲器大小,只是指定了一個“字”的概念,一個字足以持有byte,int,char,short,float,returnAddress,refrence的值,兩個字足夠大持有double,long的值。

一般來說,一個字的大小是主機平臺的一個指針的大小,12位機上,字是12位,64位機上,字是64位的,但這是實現決定的,而不是JVM規范決定的。

1.5運行期數據

pc(程序計數器)寄存器:

每個JVM線程有自己的pc寄存器,在任何點,每個JVM線程執行一個單個方法的代碼,這個方法被稱為那個線程的當前方法。如果方法是native,則pc寄存器的值沒有定義,如果不是,則pc寄存器中存放當前正在執行的JVM指令的地址。
pc寄存器占一個字寬。

棧:

每個JVM線程都有私有的棧。等價于傳統語言的棧,它持有局部變量和部分結果。并參與部分方法的調用和返回。(由于java框架是可以堆分配的,所以java的棧的存儲空間可以是不連續的)
java棧可以是固定大小或者是動態的。JVM實現可以向程序員提供對java棧的初始大小以及動態情況下的最大和最小值的控制。

如果固定大小而且線程需要的棧大于棧的大小,則出現stackoverflowError
如果動態大小但存儲器沒有足夠空間,則出現outOfMemoryError

Sun的jdk1.0.2版JVM實現中,java棧是不連續、動態的,不收縮,在線程消亡時被回收。java棧的大小的限制可以在JVM啟動時用“-oss”標志設置。

堆:

java有一個所有線程共享的堆。堆是用于分配所有類實例和數組的運行期數據區。
堆在JVM啟動時創建,由garbagecollector回收。
堆可以是固定的,也可以動態擴展,并且支持自動收縮,存儲器無需連續。
JVM實現可以向程序員提供堆初始大小以及動態情況下的最大和最小值的控制。

如果要求的堆比系統能夠擁有的堆大,則出現OutOfMemoryError

Sun的jdk1.0.2中,堆是動態的,從不收縮它的堆,它的初始值和最大值在啟動時用“-ms”和“-mx”指定。

方法區:

方法區類似于傳統語言中編譯后代碼的存儲區,存儲每個類結構例如:常數池、域、方法數據。
方法區是虛擬機建立的時候啟動的,邏輯上是垃圾回收實現的一部分,但可以不實現。
方法區可以固定大小,可以動態,可以收縮,無需連續存儲器。
JVM實現可以向程序員提供方法區初始大小以及動態情況下的最大和最小值的控制。

outofmemory異常

sun的jdk1.0.2中,仿佛去是動態的,不收縮的,不提供程序員對其最大最小值的控制。

常數池:

常數池是每個類或接口的constant_pool的運行期表示。功能類似于傳統語言的符號表,但含更寬的數據范圍。(詳細見第五章)

自身方法棧(估計應該是nativemethodstack)
其管理和普通棧類似,每個線程一個,線程創建時創建,只是使用非java的native語言(如C)寫成,以支持native方法。

Sun的jdk1.0.2版JVM實現中,java棧是固定大小。java棧的大小的限制可以在JVM啟動時用“-oss”標志設置。#p#

1.6框架

JVM體系結構中JVMframe用于存儲數據和部分結果,以及動態鏈接,返回方法的值,和調度異常。

每次java方法調用時創建一個新的框架,當方法結束的時候,框架撤銷??蚣軓膭摻ㄋ木€程的棧里分配,每個框架有自己的局部變量集和操作數棧(這些可以一次分配,因為都是編譯期可知的)。
對于一個給定線程的任何點,只有一個活躍框架,稱為當前框架,局部變量和操作數棧上的操作總是引用當前框架。

局部變量:

每個JVMframe包含一組局部變量,局部變量總是一個字寬,long型,double型存為兩個局部變量。

操作數棧:

每個JVMframe包含一個操作數棧,絕大多數java操作從當前操作數棧取值。

動態連接:

JVMframe通過包含一個對當前類的常數池的引用來達到動態鏈接的目的,java的class文件仍然可以使用符號引用訪問變量或方法。

java中的i=i++從這一章來理解應該是和框架(JVMframe)這個概念有關,也就是++操作符被實現成為了一個方法,而不是一個虛擬機指令,這樣就可以解釋了,但是目前還沒有看到有++操作符應該被實現為一個方法的說明,另外java的方法調用是值傳參的,這種情況應該也不會出現值回寫的情況.
看至1。6結束。

1.7對象的表示

JVM體系結構中JVM不對對象表示要求任何特殊的內部結構。
在sun公司的jdk實現中,對象實例就是指向一個句柄的指針,而這個句柄本身又包括兩個指針:1、一個指向包含該對象方法而代表該對象類型的class對象的指針,2、另一個指向在java堆中為該對象實例分配的存儲區域。別的JVM實現可以采用諸如:直接插入高速緩存技術等。

1.8特殊的初始化方法

實例初始化:構造函數作為具有特殊名字《init》的實例初始化方法出現,方法的名字由編譯器提供,這個方法由JVM在內部由invokespecial指令調用,只能使用于未初始化的實例上,不能被java程序員使用。
類和接口的初始化:類和接口的初始化具有特殊的名字《cinit》,方法的名稱由編譯器提供,該方法由JVM顯示調用,從不直接被java代碼和JVM指令調用,只是作為類初始化進程的一部分被間接的調用。

1.9異常

異常一層層向上拋,丟棄當前層的操作數棧和局部變量,知道遇到catch為止,如果到頂層還沒有catch,當前線程將被結束。

1.10class文件格式

class文件是平臺無關格式的二進制文件,class文件格式精確定義了文件的內容。

1.11指令集概述

JVM體系結構中一個JVM指令由一個字節的操作碼后跟0個或多個操作數構成。操作數的數目由操作碼決定。
當操作數多于一個字節的時候,以高位字節在前的方式存儲。

字節碼指令流只是單字節對齊的(除了tableswitch,和lookupswitch的特殊指令對操作數的特殊要求),放棄了數據對齊,反映了對數據緊湊性的偏好,而排除了可能提高JVM仿真器性能的某些實現技術。
JVM指令中絕大多數是類型相關的,也就是作用于特定類型的操作數的。并在該指令的助記符中顯示的標識出來。
具體的指令集后面細說。

1.12公共設計、私有實現

公共概念:class文件格式和JVM指令集
 

【編輯推薦】

  1. 簡單介紹Inside JVM體系結構
  2. JVM體系結構目的和原理
  3. 巧解Tomcat中JVM內存溢出問題
  4. 新一代JVM垃圾回收算法出爐
  5. 揭露JDK,JRE,JVM三者不為人知的隱情

 

 

責任編輯:佚名 來源: blog.chinaunix.net
相關推薦

2010-09-25 13:38:23

Inside JVM

2010-09-29 10:33:55

J2MEJVM

2010-09-16 15:22:30

JVM體系結構

2009-07-09 13:52:41

Inside JVM

2020-04-15 21:43:22

JVMJavaVMware

2010-06-18 16:15:59

UML用戶指南

2011-11-30 14:12:05

JavaJVM虛擬機

2009-06-26 15:58:28

EJB

2010-09-16 15:24:16

JVM結構

2012-02-06 17:22:44

MySQL

2014-07-23 09:33:52

2009-07-15 13:46:26

Swing體系結構

2009-09-11 10:38:03

LINQ體系結構

2013-08-01 11:17:20

SAP

2010-09-26 11:32:39

JVM結構

2010-09-27 13:48:41

JVM內存結構

2009-07-10 16:07:10

TikeSwing創建MVC體系結構

2009-09-08 14:34:42

Linq to SQL

2010-04-23 09:13:05

Oracle體系結構

2016-12-26 10:29:01

Spring框架結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线免费视频 | 欧美日韩视频 | 国产精品爱久久久久久久 | 日韩五月天 | 99精品久久 | 精品欧美乱码久久久久久 | 啪啪av| 国产精品久久久久久久午夜片 | 国产91丝袜在线播放 | 亚洲欧洲精品在线 | 在线视频99 | 欧美区日韩区 | 久久中文网 | 色婷婷综合久久久久中文一区二区 | 欧美在线观看一区 | 一区二区精品视频 | 日韩欧美中文 | 超碰免费在线观看 | 国产精品自产av一区二区三区 | 精品久久久久久久 | 午夜免费观看 | 久久美女视频 | 精品国产免费一区二区三区五区 | 久久久久久国产 | 欧美一区二区免费 | 97av视频在线观看 | 一级毛片免费完整视频 | 国产在线精品一区二区三区 | 国产黄色在线观看 | 国产精品无码永久免费888 | 日韩国产在线 | 欧美二区在线 | 免费黄色日本 | 狠狠的干 | 日韩在线免费播放 | 国产精品美女www | 成人影院在线 | 日韩一区不卡 | 日韩成人免费中文字幕 | av天天干 | 一级黄色片毛片 |