欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解java中jvm虛擬機(jī)棧的作用

 更新時間:2019年08月29日 14:29:29   作者:張占嶺  
這篇文章主要介紹了jvm虛擬機(jī)棧的作用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

jvm虛擬機(jī)棧的作用

jvm虛擬機(jī)棧棧幀的組成

jvm虛擬機(jī)棧,也叫java棧,它由一個個的棧幀組成,而棧帖由以下幾個部分組成

  • 局部變量表-存儲方法參數(shù),內(nèi)部使用的變量
  • 操作數(shù)棧-在變量進(jìn)行存儲時,需要進(jìn)行入棧和出棧
  • 動態(tài)連接-引用類型的指針
  • 方法出口-方法的返回
  • 一段原程序代碼
package com.lind.basic;

public class Demo1 {
 static int hello() {
 int a = 1;
 int b = 2;
 int c = a + b;
 return c;
 }

 public static void main(String[] args) {
 System.out.println(hello());
 }
}

一 生成字節(jié)碼文件

javac demo1.java

生成之后,擴(kuò)展名是.class,這個文件對于我們來說是沒有可讀性的。

二 對class文件反匯編

javap demo1.class > demo1.txt

我們可以通過文件編譯工具來查看demo1.txt的內(nèi)容

Compiled from "Demo1.java"
public class com.lind.basic.Demo1 {
 public com.lind.basic.Demo1();
 Code:
  0: aload_0
  1: invokespecial #1     // Method java/lang/Object."<init>":()V
  4: return

 static int hello();
 Code:
  0: iconst_1 // 把第一個整型變量推到操作數(shù)棧
  1: istore_0 // 讓它出棧,并存儲到局部變量表
  2: iconst_2
  3: istore_1
  4: iload_0 // 加載第一個數(shù)據(jù)入操作數(shù)棧
  5: iload_1 // 加載第二個數(shù)據(jù)入操作數(shù)棧
  6: iadd // 將兩個數(shù)相加,結(jié)束入操作數(shù)棧
  7: istore_2 // 將結(jié)果出棧,存到局部變量表
  8: iload_2 // 加載它入操作數(shù)棧
  9: ireturn // 返回

 public static void main(java.lang.String[]);
 Code:
  0: getstatic  #2     // Field java/lang/System.out:Ljava/io/PrintStream;
  3: invokestatic #3     // Method hello:()I
  6: invokevirtual #4     // Method java/io/PrintStream.println:(I)V
  9: return
}

對于上面的匯編文件,我們是可以看的懂的,而且我們需要,匯編語言可以直接在計(jì)算機(jī)上運(yùn)行,我想jvm應(yīng)該也是把class文件生成對應(yīng)操作系統(tǒng)的匯編文件,然后交給操作系統(tǒng)去執(zhí)行吧!

總結(jié)

以上所述是小編給大家介紹的java中jvm虛擬機(jī)棧的作用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • 詳解Java中的靜態(tài)代理模式

    詳解Java中的靜態(tài)代理模式

    這篇文章主要為大家介紹了Java中的靜態(tài)代理模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-12-12
  • MyBatis?超詳細(xì)講解動態(tài)SQL的實(shí)現(xiàn)

    MyBatis?超詳細(xì)講解動態(tài)SQL的實(shí)現(xiàn)

    動態(tài)?SQL?是?MyBatis?的強(qiáng)大特性之一。如果你使用過?JDBC?或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài)?SQL,可以徹底擺脫這種痛苦
    2022-03-03
  • Java JTable 實(shí)現(xiàn)日歷的示例

    Java JTable 實(shí)現(xiàn)日歷的示例

    這篇文章主要介紹了Java JTable 實(shí)現(xiàn)日歷的示例,幫助大家更好的理解和學(xué)習(xí)Java jtable的使用方法,感興趣的朋友可以了解下
    2020-10-10
  • spring 整合mybatis后用不上session緩存的原因分析

    spring 整合mybatis后用不上session緩存的原因分析

    因?yàn)橐恢庇胹pring整合了mybatis,所以很少用到mybatis的session緩存。什么原因呢?下面小編給大家介紹spring 整合mybatis后用不上session緩存的原因分析,需要的朋友可以參考下
    2017-02-02
  • springBoot使用openfeign來遠(yuǎn)程調(diào)用的實(shí)現(xiàn)

    springBoot使用openfeign來遠(yuǎn)程調(diào)用的實(shí)現(xiàn)

    這篇文章主要介紹了springBoot使用openfeign來遠(yuǎn)程調(diào)用的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • hadoop 詳解如何實(shí)現(xiàn)數(shù)據(jù)排序

    hadoop 詳解如何實(shí)現(xiàn)數(shù)據(jù)排序

    在很多業(yè)務(wù)場景下,需要對原始的數(shù)據(jù)讀取分析后,將輸出的結(jié)果按照指定的業(yè)務(wù)字段進(jìn)行排序輸出,方便上層應(yīng)用對結(jié)果數(shù)據(jù)進(jìn)行展示或使用,減少二次排序的成本
    2022-02-02
  • Spring AOP 與代理的概念與使用

    Spring AOP 與代理的概念與使用

    大家知道我現(xiàn)在還是一個 CRUD 崽,平時用 AOP 也是 CV 大法。最近痛定思痛,決定研究一下 Spring AOP 的原理。 這里寫一篇文章總結(jié)一下。主要介紹 Java 中 AOP 的實(shí)現(xiàn)原理,最后以兩個簡單的示例來收尾。
    2020-10-10
  • Spring aop 如何通過獲取代理對象實(shí)現(xiàn)事務(wù)切換

    Spring aop 如何通過獲取代理對象實(shí)現(xiàn)事務(wù)切換

    這篇文章主要介紹了Spring aop 如何通過獲取代理對象實(shí)現(xiàn)事務(wù)切換的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Cloud Alibaba 本地調(diào)試介紹及方案設(shè)計(jì)

    Spring Cloud Alibaba 本地調(diào)試介紹及方案設(shè)計(jì)

    為了解決 本地調(diào)試 的問題,本文實(shí)現(xiàn)了一種簡單實(shí)用的策略,可以通過 Nacos 動態(tài)配置服務(wù)路由,還可以基于用戶,部門,組織等級別配置服務(wù)路由,實(shí)現(xiàn) 本地調(diào)試 的同時,實(shí)際上也實(shí)現(xiàn) 灰度發(fā)布,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • javaFX實(shí)現(xiàn)五子棋小游戲

    javaFX實(shí)現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了javaFX實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論