精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

JVM入門之Class結構屬性表2

jf_78858299 ? 來源:北洋洋洋 ? 作者:北洋 ? 2023-02-10 11:02 ? 次閱讀

LocalVariableTable,LocalVariableTypeTable

1.「LocalVariableTable」

?用于描述局部變量表中的變量與JAVA代碼中定義變量之間的關系,同樣也可以選擇不生成該屬性

?

?用處:當編寫代碼引用到這個方法時,參數(shù)可以直接顯示變量名和類型,如果沒有該屬性,就用arg0,arg1代替;調試信息的時候可以根據參數(shù)變量名明確語義。

?

2.「LocalVariableTypeTable」

?引入泛型后加入的屬性,結構和LocalVariableTable相似,將原先用于描述字段描述符的descriptor_index替換成了描述字段的特征簽名(Signature)。

?

?對于非泛型變量,特征簽名和描述符是一致的,但是對于泛型來說,由于泛型參數(shù)類型的擦除,描述符不能夠描述泛型類型,因此定義了該屬性來完成泛型的描述。

?

結構:圖片


ConstantValue

「變量初始化,賦值時機:」 位于該屬性結構中的常量將會在類加載的準備階段就會初始化并且賦值;

其他的靜態(tài)變量在這個階段只是會被初始化然后賦默認值,如果靜態(tài)變量設置了final關鍵字,那么就是第一種情況會對變量進行賦值;

對于實例變量(非靜態(tài)變量)的賦值是在實例構造器《init》中。

「該結構中存放的字段是:」

「《Java虛擬機規(guī)范》中規(guī)定該屬性結構中存放的必須是靜態(tài)的字段,而對于javac編譯器來說還需要滿足final關鍵字的修飾,因此經過javac編譯器編譯后的該屬性中存放的字段必須是static并且是final的。」

?通知虛擬機自動為靜態(tài)變量賦值(上面那句話)。該屬性中只能存放基本類型和String,因為該屬性的屬性值

?

結構:圖片


Deprecated及Synthetic屬性

?這兩項屬性有點特殊,不攜帶任何屬性值,出現(xiàn)這兩個屬性的目的只是為了標識,這兩個屬性只有存在或不存在。

?

  1. 「Deprecated屬性」 該屬性用于表示某個類,字段或方法已經不再推薦使用,通過“@deprecated”注解設置這個屬性

2.「Synthetic屬性」

該屬性用于表示字段或者方法是編譯器自己添加的,不是代碼中的。也可以通過設置訪問標志ACC_SYNTHETIC標志位生成該項屬性。

結構:兩者都一樣,不攜帶任何屬性值。只是用于標識圖片


StackMapTable

「該屬性位于Code屬性的屬性表中」

?用處:在類加載階段的驗證階段使用該屬性,代替以前耗性能的基于數(shù)據流分析的類型推導驗證器(有了該屬性之后就不用類型推導了,可以直接判斷類型是不是符合要求,之后單獨寫類加載階段進行分析)

?

?之前驗證階段是基于數(shù)據流來進行分析推導出操作數(shù)棧和本地變量表操作的類型是否一致等(比如istore需要將操作數(shù)棧的數(shù)據保存到本地變量表中,但是取出的數(shù)據類型不是int就會發(fā)生問題),現(xiàn)在基于該項屬性可以不用推導

?

結構:圖片「一個Code屬性最多只能有一個StackMapTable屬性」


MethodParameters

「用于記錄方法的各個形參名稱和信息」

方法參數(shù)屬性,位于class中的屬性表中。之前說過這部分是存儲在局部變量表中的,因為方法中有方法體code屬性,而code中需要有局部變量表屬性代表這個方法中的變量存儲。

但是為什么還要單獨抽出一個屬性放在class中呢?

大家想想沒有code就沒有局部變量表,沒有局部變量表是不是就不能存儲方法參數(shù)了;你看接口中他有方法吧但是呢他其實沒有方法提code所以它的方法參數(shù)往哪放呢?往他借口的屬性表集合中放,也就是與code同級。這樣的話我接口里可以直接獲得方法參數(shù)通過這個屬性;而對于正常的方法也就是有方法體的代碼可以從code中的局部變量表中拿。

數(shù)據結構:1.首先說明他是什么,我是一個方法參數(shù)類型 2.我說明我存儲的時候數(shù)據有多長(多少字節(jié)),為了切割按照這個就可以正確讀取對應的數(shù)據;但是如果這個屬性中還用到了其他的數(shù)據結構(屬性),那么就是這個屬性的個數(shù)了

3.對于沒有再次用到其他屬性來描述的屬性直接使用定長數(shù)據即可;但是對于有用到其他屬性來描述這個屬性的話,則后面是對應的屬性一個一個排開,然后每個屬性如果是定長的話則不需要通過長度來說明所占字節(jié),然后這個屬性中存儲的第一個永遠是他是什么也就是名字,然后再是對應的值

不斷使用這種結構來描述一個完整的class結構

結構:圖片

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

    關注

    19

    文章

    2960

    瀏覽量

    104565
  • Class
    +關注

    關注

    0

    文章

    53

    瀏覽量

    19714
  • JVM
    JVM
    +關注

    關注

    0

    文章

    157

    瀏覽量

    12212
收藏 人收藏

    評論

    相關推薦

    jvm的類加載器的整體結構及過程解析

    前言 我們很多小伙伴平時都是做JAVA開發(fā)的,那么作為一名合格的工程師,你是否有仔細的思考過JVM的運行原理呢。 如果懂得了JVM的運行原理和內存模型,像是一些JVM調優(yōu)、垃圾回收機制等等的問題我們
    的頭像 發(fā)表于 09-27 15:49 ?3384次閱讀
    <b class='flag-5'>jvm</b>的類加載器的整體<b class='flag-5'>結構</b>及過程解析

    JavaWeb入門響應的結構

    JavaWeb入門—響應的結構
    發(fā)表于 05-15 06:00

    jQuery的基本選擇器和class屬性操作

    jQuery的基本選擇器和class操作和屬性操作
    發(fā)表于 05-19 13:04

    Jvm的整體結構和特點

    的整體結構大致如下:    1、類加載器  類加載器用來加載Java類到JVM虛擬機中,源代碼程序.java文件在經過編譯器編譯之后就被轉換成字節(jié)代碼.class文件,類加載器負責讀取字節(jié)代碼,并轉
    發(fā)表于 01-05 17:23

    Linux快速入門文件類型及文件屬性

    《嵌入式Linux應用程序開發(fā)詳解》第一章 Linux 快速入門1.3.1 文件類型及文件屬性1.文件類型1)普通文件2)目錄文件 3)連接文件 4)設備文件2文件
    發(fā)表于 12-17 07:58

    中文商品屬性結構化方法

    從非結構化商品描述文本中抽取結構屬性信息,對于電子商務實現(xiàn)商品的對比與推薦及用戶需求預測等功能具有重要意義.現(xiàn)有結構化方法大多采用監(jiān)督或半監(jiān)督的分類方法抽取
    發(fā)表于 01-02 15:58 ?0次下載
    中文商品<b class='flag-5'>屬性</b><b class='flag-5'>結構</b>化方法

    Jvm工作原理學習筆記

    [] args)函數(shù)的class都可以作為JVM實例運行的起點 b) 運行。main()作為該程序初始線程的起點,任何其他線程均由該線程啟動。JVM內部有兩種線程:守護線程和非守護線程,main()屬于非守護
    發(fā)表于 04-03 11:03 ?5次下載

    Java:JVM虛擬機的入門知識

    Java開發(fā)現(xiàn)在面試越來越難了,進大廠必備的JVM、多線程高并發(fā)這都是最基礎的知識了,今天我們一起來學習Java虛擬機入門
    的頭像 發(fā)表于 07-01 11:43 ?2290次閱讀
    Java:<b class='flag-5'>JVM</b>虛擬機的<b class='flag-5'>入門</b>知識

    JVM入門Class結構介紹1

    ?根據《JAVA虛擬機規(guī)范》的規(guī)定,Class文件格式采用一種類似于C語言結構體的偽結構來存儲數(shù)據,這種偽結構中(Class文件格式中)只有
    的頭像 發(fā)表于 02-09 16:57 ?586次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門</b><b class='flag-5'>之</b><b class='flag-5'>Class</b><b class='flag-5'>結構</b>介紹1

    JVM入門Class結構介紹2

    本篇文章圖中貼出的類型這一列也都是這兩個數(shù)據類型,如果類型是u開頭的表示為無符號數(shù)的數(shù)據類型,如果是_info結尾的表示是類型。
    的頭像 發(fā)表于 02-09 16:57 ?449次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門</b><b class='flag-5'>之</b><b class='flag-5'>Class</b><b class='flag-5'>結構</b>介紹<b class='flag-5'>2</b>

    JVM入門Class結構屬性1

    ?屬性在《JAVA虛擬機規(guī)范》中并沒有像其他數(shù)據一樣做嚴格的限制,我們甚至可以自己實現(xiàn)一個編譯器往Class結構屬性
    的頭像 發(fā)表于 02-10 11:02 ?549次閱讀
    <b class='flag-5'>JVM</b><b class='flag-5'>入門</b><b class='flag-5'>之</b><b class='flag-5'>Class</b><b class='flag-5'>結構</b><b class='flag-5'>屬性</b><b class='flag-5'>表</b>1

    jvm內存溢出該如何定位解決

    超出限制和堆空間不足。 定位JVM內存溢出問題是一個比較復雜的任務,需要結合工具和技術來進行分析和解決。本文將介紹一些常用的調試和解決內存溢出問題的工具和技術。 一、理解JVM內存結構 在解決
    的頭像 發(fā)表于 12-05 11:05 ?1295次閱讀

    jvm內存模型和內存結構

    JVM(Java虛擬機)是Java程序的運行平臺,它負責將Java程序轉換成機器碼并在計算機上執(zhí)行。在JVM中,內存模型和內存結構是兩個重要的概念,本文將詳細介紹它們。 一、JVM內存
    的頭像 發(fā)表于 12-05 11:08 ?897次閱讀

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

    初始分配的堆內存大小。例如,-Xms512m表示將初始堆大小設置為512MB。 -Xmx:設置JVM最大可分配的堆內存大小。例如,-Xmx2g表示將最大堆大小設置為2GB。 -Xmn:設置年輕代的大小
    的頭像 發(fā)表于 12-05 11:36 ?1444次閱讀

    jvm metaspacesize大小設置

    JVM的Metaspace是用于存儲類元數(shù)據的區(qū)域。在JVM中,類的元數(shù)據包括類的結構、方法、字段等信息。Metaspace的大小對于應
    的頭像 發(fā)表于 12-05 14:22 ?8740次閱讀