中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

寶塔網(wǎng)站301重定向怎么做網(wǎng)站關(guān)鍵詞如何快速上首頁

寶塔網(wǎng)站301重定向怎么做,網(wǎng)站關(guān)鍵詞如何快速上首頁,黃金網(wǎng)站app免費視頻下載,深圳前50強網(wǎng)站建設公司啟航JVM概論 😄生命不息,寫作不止 🔥 繼續(xù)踏上學習之路,學之分享筆記 👊 總有一天我也能像各位大佬一樣 🏆 博客首頁 怒放吧德德 To記錄領地 🌝分享學習心得,歡迎指正&#xff0c…

啟航·JVM概論

😄生命不息,寫作不止
🔥 繼續(xù)踏上學習之路,學之分享筆記
👊 總有一天我也能像各位大佬一樣
🏆 博客首頁 ??@怒放吧德德??To記錄領地
🌝分享學習心得,歡迎指正,大家一起學習成長!

在這里插入圖片描述

文章目錄

  • 啟航·JVM概論
    • 前言
    • 虛擬機和Java虛擬機
      • 1 虛擬機
      • 2 Java虛擬機
      • 3 JVM的位置
      • 4 *JVM的整體結(jié)構(gòu)
        • 1) 簡單介紹HotSpot VM
        • 2) 整體結(jié)構(gòu)介紹
      • 5 Java代碼執(zhí)行流程
      • 6 JVM的生命周期
        • 虛擬機啟動
        • 虛擬機執(zhí)行
        • 虛擬機退出
      • 7 常見虛擬機
    • 總結(jié)

前言

為什么要學習JVM?相信好多開發(fā)者開頭也處于迷惑之中,對于Java虛擬機也是很頭疼,大多開發(fā)者都會認為,學習JVM無非就是面試。然而,學習JVM并不是為了面試,更是為了深入去理解Java這門語言,筆者大學畢業(yè)入坑Java以來也有一年多了,說長也不長,但是在開發(fā)的過程中卻也是遇到一些性能問題,最后也是由領導解決。個人認為,學習Java虛擬機更是一種基礎知識,在開發(fā)中才能夠深入理解一些細節(jié)。

虛擬機和Java虛擬機

1 虛擬機

虛擬機(Virtual Machine)是一種軟件或硬件實體,它模擬了物理計算機的功能,允許在其上運行操作系統(tǒng)和應用程序。虛擬機通常用于隔離不同的計算環(huán)境,提供了一種獨立于物理硬件的計算平臺。

2 Java虛擬機

Java虛擬機(Java Virtual Machine,JVM)是一種軟件虛擬機,特別為執(zhí)行Java程序而設計。JVM是Java平臺的核心組件之一,它負責將Java字節(jié)碼翻譯成可以在特定計算機上運行的本地機器代碼。Java程序員編寫的Java代碼首先被編譯成字節(jié)碼,然后由JVM執(zhí)行。這種方式使Java程序具有跨平臺的特性,因為只需要在不同平臺上實現(xiàn)JVM,就可以在各種操作系統(tǒng)上運行相同的Java程序。

JVM的主要任務包括字節(jié)碼加載、解釋執(zhí)行或即時編譯、垃圾回收、內(nèi)存管理等。它還提供了各種標準庫和API,用于支持Java程序的運行和互動。不同的Java虛擬機實現(xiàn)可以適應不同的硬件和操作系統(tǒng),但它們都遵循Java虛擬機規(guī)范(Java Virtual Machine Specification),以確保Java程序的跨平臺性。

3 JVM的位置

Java虛擬機試運行在操作系統(tǒng)之上的,和硬件是沒有直接交互的。
在Java 生態(tài)系統(tǒng)中的三個關(guān)鍵組件:JDK(Java Development Kit)、JRE(Java Runtime Environment)和 JVM(Java Virtual Machine)
① JDK(Java Development Kit)

JDK是用于Java應用程序的開發(fā)工具包。它包括Java編譯器(javac)、Java虛擬機(JVM),以及各種開發(fā)工具和庫,如調(diào)試器、性能分析工具、API文檔生成工具等。JDK是開發(fā)人員用于創(chuàng)建、編譯和調(diào)試Java應用程序的關(guān)鍵工具,它使開發(fā)者能夠編寫Java源代碼并將其編譯成Java字節(jié)碼。JDK的結(jié)構(gòu)包括bin目錄,其中包含編譯器和其他命令行工具,以及l(fā)ib目錄,其中包含Java類庫和運行時支持。

② JRE(Java Runtime Environment)

JRE是用于運行Java應用程序的運行時環(huán)境。它包括Java虛擬機(JVM)和Java類庫(Java API),允許用戶執(zhí)行已編譯的Java應用程序,而不需要進行開發(fā)。JRE沒有開發(fā)工具,因此不包含編譯器或其他開發(fā)相關(guān)的工具。JRE的結(jié)構(gòu)包括bin目錄,其中包含用于運行Java應用程序的JVM可執(zhí)行文件,以及l(fā)ib目錄,其中包含Java類庫

三者中,JDK 包含 JRE,而 JRE 包含 JVM。JDK 提供了完整的 Java 開發(fā)和運行時環(huán)境,適用于開發(fā)人員,而 JRE 提供了用于運行 Java 應用程序的環(huán)境,適用于普通用戶或生產(chǎn)環(huán)境。 JVM 是在 JDK 和 JRE 中共享的核心組件,負責執(zhí)行 Java 應用程序。

4 *JVM的整體結(jié)構(gòu)

1) 簡單介紹HotSpot VM

HotSpot VM(HotSpot Virtual Machine)是Oracle(以前是Sun Microsystems)開發(fā)的 Java 虛擬機的一種實現(xiàn),它是Java平臺上最廣泛使用的虛擬機之一。HotSpot VM在性能和可移植性方面表現(xiàn)出色,它是Java應用程序的運行時引擎,負責將Java字節(jié)碼翻譯成本地機器代碼并執(zhí)行程序。

HotSpot VM是Oracle JDK(Java Development Kit)的一部分,也是許多其他Java發(fā)行版的基礎,包括OpenJDK。由于其卓越的性能和穩(wěn)定性,HotSpot VM一直是廣泛使用的Java虛擬機之一,特別適用于生產(chǎn)環(huán)境和要求高性能的Java應用程序。

2) 整體結(jié)構(gòu)介紹

在這里插入圖片描述

對于上圖,這里簡單介紹一下
首先是Java類通過編譯成class文件,在用過類加載器加載到內(nèi)存中。

類加載是Java虛擬機(JVM)的一個關(guān)鍵組件,負責將Java字節(jié)碼文件加載到內(nèi)存中并轉(zhuǎn)換為可執(zhí)行的類。類加載器的主要任務是查找和加載類文件,確保在程序運行時可以訪問所需的類。類加載器的工作使Java的動態(tài)性成為可能,允許在運行時加載和卸載類。

接著看這個第二層,運行時的數(shù)據(jù)區(qū),這里包含了方法區(qū)、Java棧、本地方法棧、堆、程序計數(shù)器

方法區(qū)是存儲類信息、常量、靜態(tài)變量以及編譯后的字節(jié)碼的地方,包括類的結(jié)構(gòu)信息、方法和字段描述,以及運行時常量池。
是Java程序中用于存儲對象實例的區(qū)域。
是每個線程獨有的,用于存儲方法調(diào)用、局部變量以及方法返回值。
本地方法棧與棧類似,但它存儲的是Java程序調(diào)用本地方法(使用JNI,Java Native Interface)時的信息。
程序計數(shù)器是當前線程執(zhí)行的字節(jié)碼指令的位置計數(shù)器。

總結(jié)

方法區(qū)和堆:這兩個是多線程共享的
Java棧、本地方法棧和程序計數(shù)器:這是每個線程都獨有一份

最后看第三層,這一層是和操作系統(tǒng)和硬件交互的重要組件。執(zhí)行引擎,這是Java虛擬機核心組件之一,他是負責執(zhí)行Java字節(jié)碼,將Java字節(jié)碼解釋成底層平臺的機器碼,或者通過即時編譯器(Just-In-Time Compiler,JIT)將字節(jié)碼編譯成本地機器代碼以提高性能。本地方法接口是Java虛擬機提供的機制,允許Java代碼與本地代碼(通常是用C或C++編寫的)進行交互,在Java中就是唄native修飾的接口方法。本地方法庫是包含本地方法的動態(tài)鏈接庫(通常是.so文件或.dll文件),用C或C++編寫。

5 Java代碼執(zhí)行流程

Java代碼的執(zhí)行流程可以分為一下幾個步驟:

  • 編寫Java代碼:編寫一個xxx.java的文件。
  • 編譯源代碼:使用Java編譯器,將Java源文件編譯成xx.class的字節(jié)碼文件(通常是使用javac)。
  • Java虛擬機:在Java虛擬機(JVM)中,其負責加載字節(jié)碼文件并將其轉(zhuǎn)換為可執(zhí)行代碼。在類加載過程中還有一些操作,類加載、鏈接、初始化等等。
  • 執(zhí)行程序:一旦類加載完成并且程序初始化完成,JVM開始執(zhí)行程序。
  • 運行時垃圾收集:JVM會定期檢查不再被引用的對象,并進行垃圾回收以釋放內(nèi)存資源
  • 程序結(jié)束:程序執(zhí)行完main方法或遇到異常時,程序?qū)⒔Y(jié)束執(zhí)行。

在這里插入圖片描述

6 JVM的生命周期

Java虛擬機的生命周期簡單來說就是三個階段:啟動、執(zhí)行、退出。JVM的生命周期確保了Java程序的安全加載、初始化和執(zhí)行,以及資源管理和垃圾回收。這一過程是Java跨平臺性的關(guān)鍵,因為它將Java程序從特定硬件平臺解耦,使其能夠在不同操作系統(tǒng)上運行。

虛擬機啟動

Java虛擬機在啟動的時候是通過類加載器創(chuàng)建一個初始類來完成。在這一階段,類加載器加載Java字節(jié)碼文件,并對其進行驗證、準備、解析和初始化等操作,接著鏈接,包括驗證類的正確性、為靜態(tài)變量分配內(nèi)存和解析符號引用。然后初始化,在這個階段,JVM執(zhí)行類的靜態(tài)初始化代碼,初始化靜態(tài)變量。

虛擬機執(zhí)行

JVM進入運行階段,開始執(zhí)行程序,通常從main方法開始。程序在運行過程中可以加載、鏈接、初始化其他類,并執(zhí)行程序邏輯。同時,JVM的垃圾回收器定期檢查不再被引用的對象,進行垃圾回收。這個Java程序在Java虛擬機中就是一個進程。

虛擬機退出

在程序執(zhí)行完成或出現(xiàn)嚴重錯誤時,JVM會進入終止階段,可以執(zhí)行清理操作。最后,如果某個類不再被引用,并且沒有實例存在,JVM可能會進行卸載,釋放內(nèi)存。

7 常見虛擬機

常見的虛擬機,每種的實現(xiàn)通常都是針對不同的需求,比如sun classic vm、exact vm、jrockit、j9等等。以下筆者通過網(wǎng)絡查閱到一些的簡單介紹。

在Java生態(tài)系統(tǒng)中,有幾個常見的Java虛擬機(JVM)實現(xiàn),每個實現(xiàn)通常針對不同的用例和需求。以下是一些常見的JVM實現(xiàn):

  • Oracle HotSpot JVM:這是Oracle公司的官方JVM實現(xiàn),廣泛用于生產(chǎn)環(huán)境。它以高性能和優(yōu)化而聞名,是許多企業(yè)應用程序的首選JVM。
  • OpenJDK:OpenJDK是Oracle的開放源JVM實現(xiàn),也是許多其他JVM的基礎。它提供了Java開發(fā)工具和庫,并被許多Linux發(fā)行版采用作為默認JVM。
  • IBM J9 JVM:IBM的J9虛擬機是WebSphere應用服務器和其他IBM產(chǎn)品的一部分。它專注于嵌入式和企業(yè)級應用。
  • Apache Harmony:雖然已經(jīng)終止,但Apache Harmony曾是一個Apache項目,旨在創(chuàng)建一個免費的、開放源的JVM實現(xiàn)。雖然它不再維護,但它仍然被某些項目和研究用途使用。
  • GraalVM:GraalVM是Oracle開發(fā)的一款全棧虛擬機,支持多種語言,包括Java、JavaScript、Python等。它具有高性能和多語言互操作性,適用于各種應用場景。
  • Azul Zing:Azul Zing是專門針對大規(guī)模、高性能Java應用程序而設計的JVM。它包括C4垃圾收集器,可顯著降低垃圾回收停頓時間。
  • SAP JVM:SAP JVM是針對SAP應用的JVM實現(xiàn),優(yōu)化了SAP系統(tǒng)的性能和穩(wěn)定性。

這些JVM實現(xiàn)在性能、垃圾回收策略、支持的平臺和工具等方面存在差異,開發(fā)人員可以根據(jù)其應用程序的需求選擇最適合的JVM??偟膩碚f,Java虛擬機的多樣性為Java生態(tài)系統(tǒng)的健康發(fā)展提供了重要的選擇。

總結(jié)

本章就是學習一下Java虛擬機的概念,為了對Java虛擬機有個簡單的認識??傊覀冎赖腏VM有許多,但是我們經(jīng)常遇到的就是 Oracle HotSpot JVM ,Java虛擬機的主要任務包括字節(jié)碼加載、解釋執(zhí)行或即時編譯、垃圾回收、內(nèi)存管理等。它還提供了各種標準庫和API,用于支持Java程序的運行和互動。不同的Java虛擬機實現(xiàn)可以適應不同的硬件和操作系統(tǒng)。

http://www.risenshineclean.com/news/40977.html

相關(guān)文章:

  • 佛山企業(yè)網(wǎng)站搭建公司百度行發(fā)代理商
  • 用什么軟件做網(wǎng)站圖片百度平臺推廣聯(lián)系方式
  • 網(wǎng)站欄目結(jié)構(gòu)浙江專業(yè)網(wǎng)站seo
  • 自己做網(wǎng)站處理圖片用什么軟件下載寧德市人力資源和社會保障局
  • 東莞廣告公司電話百度關(guān)鍵詞優(yōu)化大師
  • 汕尾商城網(wǎng)站建設溫州網(wǎng)站建設優(yōu)化
  • 響應式網(wǎng)站建設必推全網(wǎng)天下seo網(wǎng)站推廣方法
  • 有沒有在家做的手工活網(wǎng)站網(wǎng)絡推廣公司專業(yè)網(wǎng)絡
  • 網(wǎng)站推廣工作職責博客網(wǎng)站登錄
  • 有贊小程序開發(fā)平臺seo優(yōu)化個人博客
  • 自制app網(wǎng)站網(wǎng)站標題算關(guān)鍵詞優(yōu)化嗎
  • 如何用eclipse做網(wǎng)站全媒體運營師報考條件
  • wordpress sora 公開版谷歌seo服務公司
  • 做海外網(wǎng)站推廣360優(yōu)化大師安卓手機版下載安裝
  • 網(wǎng)站開發(fā) h5品牌廣告語
  • 網(wǎng)站開發(fā)女今日最新的新聞
  • 做模板網(wǎng)站怎么放視頻博客seo優(yōu)化技術(shù)
  • 蘭州網(wǎng)站建設報價天津百度關(guān)鍵詞seo
  • 做網(wǎng)站的網(wǎng)址濰坊seo招聘
  • 有了公網(wǎng)ip如何做網(wǎng)站免費網(wǎng)站友情鏈接
  • 宿松網(wǎng)站建設公司廣告推廣平臺網(wǎng)站
  • 十堰響應式網(wǎng)站建設免費輿情網(wǎng)站
  • 長春電商網(wǎng)站建設哪家專業(yè)天津seo選天津旗艦科技a
  • 網(wǎng)站備案完了怎么做發(fā)帖百度秒收錄網(wǎng)站分享
  • 如何做網(wǎng)站的基礎惠州優(yōu)化怎么做seo
  • 特效炫酷的網(wǎng)站深圳seo優(yōu)化排名公司
  • 北京b2c網(wǎng)站開發(fā)抖音廣告代運營
  • 做窗簾的效果圖網(wǎng)站快推達seo
  • 柳河縣做網(wǎng)站谷歌paypal下載
  • 做網(wǎng)站哪些技術(shù)資源優(yōu)化排名網(wǎng)站