最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年08月29日 14:29:29   作者:張占嶺  
這篇文章主要介紹了jvm虛擬機(jī)棧的作用,本文通過實例代碼給大家介紹的非常詳細(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ī)上運(yùn)行,我想jvm應(yīng)該也是把class文件生成對應(yīng)操作系統(tǒng)的匯編文件,然后交給操作系統(tǒng)去執(zhí)行吧!

總結(jié)

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

相關(guān)文章

  • SpringBoot接收請求參數(shù)的四種方式總結(jié)

    SpringBoot接收請求參數(shù)的四種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于SpringBoot接收請求參數(shù)的四種方式,文中通過代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 詳解Java枚舉與接口常量和類常量的區(qū)別

    詳解Java枚舉與接口常量和類常量的區(qū)別

    這篇文章主要為大家詳細(xì)介紹了Java中枚舉與接口常量、類常量有什么區(qū)別,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的可以了解一下
    2022-10-10
  • Java中的hashcode方法介紹

    Java中的hashcode方法介紹

    這篇文章主要介紹了Java中的hashcode方法介紹,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • j2ee之AJAX二級聯(lián)動效果

    j2ee之AJAX二級聯(lián)動效果

    這篇文章主要為大家詳細(xì)介紹了j2ee之AJAX二級聯(lián)動效果的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Spring注解之@Conditional使用解析

    Spring注解之@Conditional使用解析

    這篇文章主要介紹了Spring注解之@Conditional使用解析,@Conditional注解可以說是SpringBoot的條件注解,表示組件只有在所有指定條件都匹配時才有資格注冊,條件是可以在 bean 定義注冊之前??以編程方式確定的任何狀態(tài),需要的朋友可以參考下
    2024-01-01
  • 繼承WebMvcConfigurationSupport后自動配置不生效及如何配置攔截器

    繼承WebMvcConfigurationSupport后自動配置不生效及如何配置攔截器

    這篇文章主要介紹了繼承WebMvcConfigurationSupport后自動配置不生效及如何配置攔截器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Mybatis多個字段模糊匹配同一個值的案例

    Mybatis多個字段模糊匹配同一個值的案例

    這篇文章主要介紹了Mybatis多個字段模糊匹配同一個值的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot中l(wèi)ogback日志保存到mongoDB的方法

    SpringBoot中l(wèi)ogback日志保存到mongoDB的方法

    這篇文章主要介紹了SpringBoot中l(wèi)ogback日志保存到mongoDB的方法,
    2017-11-11
  • Springboot動態(tài)配置AOP切點詳解

    Springboot動態(tài)配置AOP切點詳解

    這篇文章主要介紹了Springboot動態(tài)配置AOP切點詳解,Springboot 可以定義注解切點去攔截注解修飾的類方法以及execution(xxxx)切點去攔截具體的類方法,默認(rèn)情況下我們都會使用注解@PointCut去定義切點,然后定義切面攔截切點,需要的朋友可以參考下
    2023-09-09
  • SpringBoot中@MessageMapping注解的原理及使用詳解

    SpringBoot中@MessageMapping注解的原理及使用詳解

    這篇文章主要介紹了SpringBoot中@MessageMapping注解的原理及使用詳解,@MessageMapping注解是Spring Boot提供的一個重要的注解之一,它可以幫助我們處理WebSocket消息,需要的朋友可以參考下
    2023-07-07

最新評論

河曲县| 天门市| 佛山市| 怀仁县| 鸡东县| 尤溪县| 滨海县| 拜泉县| 秦皇岛市| 定兴县| 琼中| 金秀| 南充市| 监利县| 五常市| 微博| 都兰县| 儋州市| 奉化市| 柳江县| 昌图县| 攀枝花市| 微山县| 喀喇| 霍山县| 台前县| 甘德县| 浦江县| 陵水| 宜兰县| 铜山县| 射洪县| 门源| 新泰市| 南昌县| 文昌市| 揭西县| 海淀区| 台安县| 郁南县| 米易县|