真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JVM運(yùn)行流程/運(yùn)行時(shí)數(shù)據(jù)區(qū)-創(chuàng)新互聯(lián)

JVM運(yùn)行流程

程序在執(zhí)行之前先要把 java代碼 轉(zhuǎn)換成 字節(jié)碼文件 (.class文件), JVM 首先需要把字節(jié)碼通過一定的方式 類加載器 (ClassLoader) 把文件加載到內(nèi)存中 運(yùn)行時(shí)數(shù)據(jù)區(qū) (Runtime Data Area) , 而字節(jié)碼文件是 JVM 的一套指令集規(guī)范, 并不能直接交給底層操作系統(tǒng)去執(zhí)行, 因此需要特定的命令解析器 執(zhí)行引擎 (Execution Engine) 將字節(jié)碼翻譯成底層系統(tǒng)指令再交由CPU去執(zhí)行, 而這個(gè)過程中需要調(diào)用其他語言的接口 本地庫接口 來實(shí)現(xiàn)整個(gè)程序的功能.

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),商洛網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:商洛等地區(qū)。商洛做網(wǎng)站價(jià)格咨詢:028-86922220

總的來看, JVM主要通過以下四部分來運(yùn)行Java程序:

  1. 類加載器
  2. 運(yùn)行時(shí)數(shù)據(jù)區(qū)
  3. 執(zhí)行引擎
  4. 本地庫入口

通俗來講 JVM 劃分的區(qū)域就是:

  1. 堆: 存放的是 new 的對(duì)象.
  2. 方法區(qū): 放的是 類對(duì)象. (加載好的類).
  3. 棧: 放的是方法之間的調(diào)用關(guān)系.
  4. 程序計(jì)數(shù)器: 放的是下一個(gè)要執(zhí)行的指令的地址.

而在棧中還能分兩部分:

  • 虛擬機(jī)棧 (Java 里面用來保存調(diào)用關(guān)系的內(nèi)存空間)
  • 本地方法棧 (本地方法, 也就是 JVM 內(nèi)部 C++ 寫的代碼, 調(diào)用關(guān)系的內(nèi)存空間)

這里經(jīng)常會(huì)有一個(gè)小的試題出現(xiàn): 看代碼.

package Test;

public class Demo {
    private int n = 10;
    private static int m = 20;

    public static void main(String[] args) {
        Demo demo = new Demo();
    }
}

問: 在當(dāng)前代碼中, n 在內(nèi)存中的哪個(gè)區(qū)域? m 在內(nèi)存中的哪個(gè)區(qū)域? demo 在內(nèi)存中的那個(gè)區(qū)域?

答: n是成員變量, 就是在堆上.? m是靜態(tài)變量, 在類對(duì)象里, 就是在方法區(qū)中. demo是局部變量, 就是在棧上.?

另一段代碼:

package Test;

class A {
    private int x = 10;
}

public class Demo {
    private int n = 10;
    private static int m = 20;

    private static A a = new A();
    
    public static void main(String[] args) {
        Demo demo = new Demo();
    }
}

在看這段代碼, 在這段代碼中, 問: x 在內(nèi)存中的哪個(gè)區(qū)域? a在內(nèi)存中的哪個(gè)區(qū)域?

答: 首先 a 是靜態(tài)的, 那么它仍然在方法區(qū)中, 但是它 new 的 A(), 還是在堆里, 所以 x 也是在堆里.?

內(nèi)存劃分

JVM 運(yùn)行時(shí)數(shù)據(jù)區(qū)域也叫內(nèi)存布局, 它由一下五個(gè)部分組成:

從上圖我們可以看出, 棧 是每一個(gè)線程都有的, 然后在圖中是沒有方法區(qū)的, 多了一個(gè)元數(shù)據(jù)區(qū), 大家看到了嗎, 方法區(qū)是 JDK1.7 之前的版本, 到了 1.8 之后, 把之前的方法區(qū)給去掉了, 弄出來這個(gè)元數(shù)據(jù)區(qū), 他們兩個(gè)的區(qū)別就是: 元數(shù)據(jù)區(qū)的內(nèi)存不是在 JVM 中的, 之前方法區(qū)是在 JVM 申請(qǐng)到的這一大塊內(nèi)存里, 劃分的區(qū)域. 元數(shù)據(jù)區(qū)呢是用的本地內(nèi)存.?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前標(biāo)題:JVM運(yùn)行流程/運(yùn)行時(shí)數(shù)據(jù)區(qū)-創(chuàng)新互聯(lián)
地址分享:http://weahome.cn/article/dhpjss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部