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

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

3天內(nèi)不再提示

Java:JVM虛擬機的入門知識

如意 ? 來源:百家號 ? 作者: 愿編程是詩 ? 2020-07-01 11:43 ? 次閱讀

Java開發(fā)現(xiàn)在面試越來越難了,進大廠必備的JVM、多線程高并發(fā)這都是最基礎的知識了,今天我們一起來學習Java虛擬機入門。

運行時數(shù)據(jù)區(qū)域

Java虛擬機在執(zhí)行Java程序的過程中會把它所管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域,主要有這么幾個區(qū)域,并且對每個區(qū)域進行介紹。

Java:JVM虛擬機的入門知識

程序計數(shù)器

程序計數(shù)器(Program Counter Register)它是一塊較小的內(nèi)存空間,它是記錄當前線程所執(zhí)行到的字節(jié)碼的行號。因為由于Java虛擬機的多線程是通過線程輪流切換、以及分配處理器執(zhí)行時間的方式來實現(xiàn)的,一個處理器都只會執(zhí)行一條線程中的指令。為了讓線程切換后能夠恢復到正常的執(zhí)行位置,所以每一條線程都有一個獨立的程序計數(shù)器,這樣線程之間計數(shù)器互不影響。

Java:JVM虛擬機的入門知識

Java虛擬機棧

和程序計數(shù)器一樣是線程私有,它的生命周期是與線程相同的。Java虛擬機是Java執(zhí)行方法的內(nèi)存模型,在每個方法執(zhí)行時都會同步創(chuàng)建一個棧幀(Stack Frame),主要是用來存儲:局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。

本地方法棧

本地方法棧就是為虛擬機使用到的本地(Native) 方法服務的。

Java堆(Heap)

Java堆是虛擬機所管理的內(nèi)存中最大的一塊,是所有線程共享的一塊區(qū)域,唯一的目的就是存放對象實例,并且是“幾乎”所有的對象的實例都是在“Java堆”分配內(nèi)存的。

同時Java堆也是垃圾收集器管理的內(nèi)存區(qū)域,也稱之為“GC堆”。由于現(xiàn)在基本采用分代回收垃圾器算法,所以Java堆又可以分為:新生代、老年代。

法區(qū)

方法區(qū)也是線程共享的內(nèi)存區(qū)域,主要存儲已被虛擬機加載的類型信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼緩存等數(shù)據(jù)。

很多Java程序員都習慣在 HotSpot虛擬機上開發(fā)、部署程序,很多人都更愿意把方法區(qū)稱呼為“永久代“。到了 JDK 8,終于完全廢棄了永久代的概念,改用與JRockit、J9一樣在本地內(nèi)存中實現(xiàn)的元空間(Metaspace)來代替了。注意:這區(qū)域的內(nèi)存回收目標主要是針對常量池的回收和對類型的卸載。

補充

運行時常量池:它是方法區(qū)的一部分,用于存放編譯期生成的各種字面量與符號引用,這部分內(nèi)容將在類加載后存放到方法區(qū)的運行時常量池中。對于初學者想深入JVM虛擬機原理,國內(nèi)非常不錯的深入理解Java虛擬機第三版這本,值得Java程序員看的。

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

    關注

    19

    文章

    2943

    瀏覽量

    104096
  • JVM
    JVM
    +關注

    關注

    0

    文章

    155

    瀏覽量

    12168
  • 虛擬機
    +關注

    關注

    1

    文章

    888

    瀏覽量

    27812
收藏 人收藏

    評論

    相關推薦

    什么是虛擬機?虛擬機真的那么好用嗎?

    在日新月異的科技世界中,虛擬化技術如同一座橋梁,連接著現(xiàn)實與數(shù)字的鴻溝,為我們打開了全新的計算維度。虛擬機,這一概念,自其誕生以來,就以其獨特的魅力和強大的功能,深深地影響了軟件開發(fā)、系統(tǒng)測試和云
    的頭像 發(fā)表于 07-06 08:05 ?463次閱讀
    什么是<b class='flag-5'>虛擬機</b>?<b class='flag-5'>虛擬機</b>真的那么好用嗎?

    虛擬機ubuntu怎么聯(lián)網(wǎng)

    虛擬機ubuntu怎么聯(lián)網(wǎng)? 虛擬機(Virtual Machine)是運行在物理(Host Machine)上的虛擬操作系統(tǒng)環(huán)境。在虛擬機
    的頭像 發(fā)表于 12-27 16:51 ?793次閱讀

    eclipse設置jvm內(nèi)存大小

    內(nèi)存大小,并對其背后的原理進行解釋。 JVMJava虛擬機)是Java程序的運行環(huán)境,它負責將Java字節(jié)碼翻譯成機器碼,以便在不同的平臺
    的頭像 發(fā)表于 12-06 11:43 ?1581次閱讀

    weblogic jvm參數(shù)配置

    在WebLogic中,JVM參數(shù)配置是非常重要的,它可以對應用程序的性能和穩(wěn)定性產(chǎn)生直接影響。JVM參數(shù)通過調(diào)整Java虛擬機的運行時行為,可以優(yōu)化內(nèi)存管理、垃圾回收以及線程管理等方面
    的頭像 發(fā)表于 12-05 14:31 ?1142次閱讀

    jvm配置metaspace最大值的參數(shù)

    JVMJava虛擬機)是Java程序的運行環(huán)境,而Metaspace是Java 8及其更高版本中引入的一種新的內(nèi)存區(qū)域,用于存儲類的元數(shù)據(jù)
    的頭像 發(fā)表于 12-05 14:21 ?1513次閱讀

    java虛擬機內(nèi)存包括遠空間內(nèi)存嗎

    Java虛擬機JVM)內(nèi)存是Java程序執(zhí)行時所使用的內(nèi)存空間的總稱,包括了Java堆、方法區(qū)、本地方法棧、
    的頭像 發(fā)表于 12-05 14:15 ?308次閱讀

    jvm內(nèi)存區(qū)域中,哪一塊是屬于線程共享

    JVMJava虛擬機)是一種計算機軟件,用于執(zhí)行Java字節(jié)碼。在JVM中,存在多個內(nèi)存區(qū)域,包括線程共享的內(nèi)存區(qū)域。本文將詳細介紹
    的頭像 發(fā)表于 12-05 14:14 ?1092次閱讀

    jvm運行時內(nèi)存區(qū)域劃分

    JVMJava Virtual Machine(Java虛擬機)的縮寫,它是Java編程語言的運行環(huán)境。
    的頭像 發(fā)表于 12-05 14:08 ?412次閱讀

    jvm參數(shù)的設置和jvm調(diào)優(yōu)

    JVMJava虛擬機)參數(shù)的設置和調(diào)優(yōu)對于提高Java應用程序的性能和穩(wěn)定性非常重要。在本文中,我們將詳細介紹JVM參數(shù)的設置和調(diào)優(yōu)方法。
    的頭像 發(fā)表于 12-05 11:36 ?1046次閱讀

    jvm調(diào)優(yōu)參數(shù)

    JVMJava虛擬機)是Java程序的運行環(huán)境,它負責解釋Java字節(jié)碼并執(zhí)行相應的指令。為了提高應用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)
    的頭像 發(fā)表于 12-05 11:29 ?518次閱讀

    jvm內(nèi)存模型和內(nèi)存結構

    JVMJava虛擬機)是Java程序的運行平臺,它負責將Java程序轉換成機器碼并在計算機上執(zhí)行。在J
    的頭像 發(fā)表于 12-05 11:08 ?729次閱讀

    jvm內(nèi)存溢出該如何定位解決

    Java應用程序中,JVMJava虛擬機)內(nèi)存溢出是指Java應用程序試圖分配的內(nèi)存超過了JVM
    的頭像 發(fā)表于 12-05 11:05 ?1132次閱讀

    JVM指針壓縮的工作原理

    當今,Java已經(jīng)成為了世界上最流行的編程語言之一。在Java的生態(tài)系統(tǒng)中,JVMJava虛擬機)是至關重要的組成部分。
    的頭像 發(fā)表于 10-16 15:08 ?616次閱讀
    <b class='flag-5'>JVM</b>指針壓縮的工作原理

    JVM知識體系剖析

    ,Java虛擬機和其他組件;JDK包括JRE以及編譯器和調(diào)試器等命令行開發(fā)工具,可以用來開發(fā)Java應用程序 。 PS:JDK包含JRE,我們
    的頭像 發(fā)表于 10-10 11:37 ?363次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>知識</b>體系剖析

    OOM會導致JVM虛擬機退出嗎

    熟悉Java開發(fā)的人,應該會經(jīng)常遇到的異常:OOM,那么這個異常會導致 JVM 虛擬機退出嗎? 1、結論 Java虛擬機
    的頭像 發(fā)表于 09-30 10:14 ?668次閱讀