那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

JVM知識體系剖析

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-10 11:37 ? 次閱讀

從源碼到運行、類加載,再到內存分配和垃圾回收,以及JVM調優的技巧與實戰。
理論-實戰-面試三結合,帶大家剖析整個JVM知識體系,一站解決JVM問題。

1、Oracle Java SE 8 產品組件

圖片
通常來說 Java平臺標準版(Java SE)包括 Java SE開發工具包(JDK)和Java SE運行時環境(JRE)。

JRE提供了運行以Java編程語言編寫的applet和應用程序所必需的庫,Java虛擬機和其他組件;JDK包括JRE以及編譯器和調試器等命令行開發工具,可以用來開發Java應用程序 。

PS:JDK包含JRE,我們通常安裝JDK的同時也會安裝JRE。

2、虛擬機

上圖的最下一行Java虛擬機是被 JRE 所包含,我們在介紹Java虛擬機時,先了解虛擬機的概念。

所謂虛擬機,其實就是一臺虛擬的機器,可以用來執行一系列虛擬的命令。大體上虛擬機可以分為兩種:系統虛擬機和程序虛擬機。

①、系統虛擬機:是完全對物理計算機的仿真,可以說和一臺真實的PC操作系統沒什么區別。比如常用的 Vmare 以及 Visual Box 軟件,通過這些軟件能夠模擬出具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。

②、程序虛擬機:專門為執行單個計算程序而產生,最典型的就是Java虛擬機,在Java虛擬機中執行字節碼文件命令。

3、Java虛擬機

了解了什么是虛擬機,我們再看什么是 Java虛擬機。

Java虛擬機可以看做是一臺抽象的計算機,如同真實的計算機那樣,它有自己的指令集以及各種運行時內存區域,它與Java語言沒有必然的聯系,只與特定的二進制文件——class 文件格式關聯(字節碼文件),可以通過Java語言或者其他語言編寫的程序編譯成class文件,然后在Java虛擬機上運行。Java虛擬機有以下二個特點:

①、語言無關

Java虛擬機只和class文件關聯,所以只要你編寫程序的語言能夠編譯成class文件,那么都能夠在Java虛擬機上運行。
圖片
②、平臺無關

Java從誕生之初就宣傳的一個口號:一次編寫,到處運行。

也就是說Java是一個跨平臺的語言,那么Java是如何實現跨平臺的呢?

其實Java之所以跨平臺是因為Java虛擬機的適配,不同的系統實現不同的Java虛擬機。Java虛擬機就相當于操作系統和應用程序之間的中介,每種平臺安裝適應該平臺的Java虛擬機,那么我們編寫的程序當然能夠在任意平臺運行。

4、Java虛擬機種類

商用虛擬機:

①、Sun HotSpot

該虛擬機性能優越,是 sun JDK1.3 及以后所有 sun JDK 版本默認的虛擬機,使用最為廣泛,本系列博客就是以這個虛擬機為平臺進行介紹。
圖片

②、BEA JRockit

JRockit 虛擬機是 BEA 公司于 2002 年從 Appeal Virtual Machines 收購獲得的虛擬機。它是一款面向服務器硬件和服務端使用場景高度優化過的虛擬機,曾經號稱是“世界上速度最快的虛擬機”。由于專注于服務端應用,它的內部不包含解析器的實現,全部代碼都靠即時編譯器編譯后執行。

③、IBM J9

J9 虛擬機是 IBM 公司單獨開發的高性能虛擬機,它并不獨立出售,而是作為 IBM 公司各種產品的執行平臺,IBM 把它定義為一個可以適應從嵌入式設備到大型企業級應用的、高可移植性的Java運行平臺。

④、Sun Classic

這個虛擬機很原始,是 JDK1.0 時代使用的Java虛擬機,是各種虛擬機的鼻祖,它的內部不存在即時編譯器,只能使用純解釋的方式運行。

⑤、Sun Exact

這是 Sun 公司在 HotSpot 之外的另一個虛擬機,在 JDK1.2 時代曾短暫的投入過商用,它和 HotSpot 同時開發,但最終被 HotSpot 取代。

⑥、Apache Harmony

Harmony 是 Apache 軟件基金會主導的、開源的、獨立的、實際兼容與 JDK1.5 和 JDK1.6的虛擬機實現,它間接催生了 Google Android 平臺的 Dalvik 虛擬機,Android 的影響力現在有多大不用多說,目前已經是最成功的的數碼設備通用平臺。但是由于它的 TCK 授權問題,直接導致 Apache 與 Oracle 的決裂,從而退出了 JCP 組成,這是近代 Java 陣營遇到的最嚴重的分裂危機。

嵌入式虛擬機

①、Dalvik

Dalvik 虛擬機是 Google 等廠商合作開發的 Android 移動設備平臺的核心組成部分之一,它執行 dex(Dalvik Executable) 文件而不是 class 文件,使用寄存器架構而不是棧架構,但是它的開發體系與Java有著千絲萬縷的關系,可以直接使用大部分的 Java API、dex 文件可以直接從class文件轉化而來。并且在 Android 2.2 中提供了即時編譯器的實現,性能大大的提高。

②、KVM

在 Android、IOS智能手機操作系統出現之前,曾廣泛應用于手機平臺的一種虛擬機。

③、CDC/CLDC HotSpot

CDC和 CLDC HotSpot 分別是 Sun 針對高端嵌入式設備和中低端嵌入式設備的虛擬機,用來代替 KVM。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3055

    瀏覽量

    74325
  • JAVA
    +關注

    關注

    19

    文章

    2974

    瀏覽量

    105135
  • JVM
    JVM
    +關注

    關注

    0

    文章

    158

    瀏覽量

    12259
  • 虛擬機
    +關注

    關注

    1

    文章

    937

    瀏覽量

    28426
  • 工具包
    +關注

    關注

    0

    文章

    47

    瀏覽量

    9564
收藏 人收藏

    評論

    相關推薦

    嵌入式學習指引--嵌入式系統知識體系,學習誤區

    本帖最后由 eehome 于 2013-1-5 09:56 編輯 1 嵌入式系統的知識體系  嵌入式系統的應用范圍可以粗略分為兩大類:電子系統的智能化(工業 控制、現代農業、家用電器、汽車電子
    發表于 03-11 16:58

    嵌入式系統知識體系、學習誤區及建議

    嵌入式系統知識體系、學習誤區及建議
    發表于 08-20 15:29

    HIL測試團隊建設上篇-知識體系與角色劃分

    人們之所以選擇與他人合作,要么是將做的事情過于復雜,不可能獨自完成;要么就是想要加快速度,提高效率。對汽車ECU進行HIL測試,也是如此。HIL測試團隊知識體系首先,我們來看看HIL測試團隊應具備
    發表于 02-08 13:50

    嵌入式系統的知識體系和學習誤區

    1 嵌入式系統的知識體系嵌入式系統的應用范圍可以粗略分為兩大類:(1)電子系統的智能化(工業控制,現代農業、家用電器、汽車電子、測控系統、數據采集等等);(2)計算機應用的延伸(MP3、手機、通信
    發表于 07-30 14:32

    Jvm的整體結構和特點

    文件,JVM都可以識別,這也是現在Java體系下業務編程經常混語言的原因。  注意:現在和后續Jvm系列文章都是基于HotSpot-VM和JDK1.8+版本的基礎之上。  二、虛擬機結構  J
    發表于 01-05 17:23

    嵌入式系統的知識體系

    嵌入式系統的知識體系嵌入式系統的學習誤區嵌入式系統基礎階段的學習建議
    發表于 02-19 07:06

    JVM知識點匯總,不看肯定后悔

    JVM知識點匯總,不看肯定后悔
    發表于 11-30 06:13

    能夠快速構建嵌入式學習所需要知識體系的書籍推薦

    經常有網友要我推薦一些關于嵌入式方面的書,尤其是一些轉行學嵌入式的朋友,該看那些書能快速構建嵌入式學習所需要的知識體系呢?嵌入式是一門交叉學科,沒有足夠的知識儲備,上來就學習的話,往往也就成了走過場
    發表于 12-15 08:01

    LCD1602知識體系的結構學習與理解

    LCD1602的學習與理解文章目錄LCD1602的學習與理解一、LCD1602知識體系的結構二、初始化程序# 前言看過很多博主的文章,很多都講得不是很清楚,很可能的原因就是,這些博主在寫文章的時候
    發表于 01-27 06:31

    淺析自然語言處理知識體系結構

    自然語言處理知識太龐大了,網上也都是一些零零散散的知識,比如單獨講某些模型,也沒有來龍去脈,學習起來較為困難,于是總結了一份知識體系結構。
    的頭像 發表于 08-18 09:57 ?5127次閱讀

    電子硬件的知識體系是怎樣的

    最近有不少軟件領域的牛人進軍硬件行業,但不知從何處入手。相信每個人面對一個龐大的知識體系時都一樣迷茫。最佳的應對策略就是找一個最貼近自己需求的切入點,然后向四面八方鋪開去逐漸認識整個知識網絡。這篇文章就是為了讓你在這個知識網里面
    的頭像 發表于 10-20 11:36 ?4395次閱讀

    Java:JVM虛擬機的入門知識

    Java開發現在面試越來越難了,進大廠必備的JVM、多線程高并發這都是最基礎的知識了,今天我們一起來學習Java虛擬機入門。
    的頭像 發表于 07-01 11:43 ?2353次閱讀
    Java:<b class='flag-5'>JVM</b>虛擬機的入門<b class='flag-5'>知識</b>

    嵌入式系統的知識體系

    嵌入式系統的知識體系  嵌入式系統的應用范圍可以粗略分為兩大類:電子系統的智能化(工業 控制、現代農業、家用電器、汽車電子、測控系統、數據采集等),計算機應用的延伸(MP3、手機、通信、網絡、計算機
    發表于 10-20 12:35 ?3次下載
    嵌入式系統的<b class='flag-5'>知識體系</b>

    關于JVM的調優知識

    最近很多小伙伴跟我說,自己學了不少JVM的調優知識,但是在實際工作中卻不知道何時對JVM進行調優。今天,我就為大家介紹幾種JVM調優的場景。
    的頭像 發表于 09-14 14:54 ?885次閱讀

    關于Prometheus監控系統相關的知識體系

    今天浩道跟大家分享關于Prometheus監控系統相關的知識體系,讓你通過本文可以大體掌握其相關知識體系
    的頭像 發表于 10-20 09:06 ?1248次閱讀
    百家乐官网必胜赌| 皇冠赔率| 百家乐统计概率| 百家乐官网的桌子| 威尼斯人娱乐城代理加盟| 百家乐最新套路| 大渡口区| 最好的棋牌游戏大厅| 大发888代充| 免费玩百家乐的玩法技巧和规则| 百家乐闲庄概率| 百家乐客户端软件| 金赞百家乐现金网| 赌百家乐怎样能赢| 百家乐三珠连跳打法| 菠菜百家乐娱乐城| 做生意看风水| 百家乐美女真人| 真钱百家乐开户试玩| 百家乐娱乐求指点呀| 百家乐9人桌布| 马牌百家乐的玩法技巧和规则 | 澳门博彩股份有限公司| 威尼斯人娱乐场荷官| 线上百家乐玩法| 澳门百家乐注册| 六合彩特码开奖结果| 78棋牌游戏| 织金县| 百家乐官网高档筹码| 百家乐官网桌手机套| 百家乐官网平台在线| 真人百家乐官网视频| 真人百家乐网站接口| 15人百家乐官网桌| 百家乐平注法是什么| 百家乐娱乐平台网77scs| 南京百家乐官网电| 诸子百家乐的玩法技巧和规则| 888娱乐城返水| 网上现金赌场|